ViewPageAsImage
var ViewPageAsImage = function(target, label) {
var setting = {
min_height: 4,
min_width: 4,
scroll_factor: 0.5
};
var widget = {
window: null,
document: null,
root: null,
body: null,
overlay: null,
selection: null,
selection_inner: null,
selection_top: null,
selection_bottom: null,
selection_left: null,
selection_right: null
};
var get_position = function(element) {
return element.getBoundingClientRect();
};
var scroll_to_y = function(min_y, max_y) {
var scroll_up = Math.round(
(24 - min_y + widget.root.scrollTop) * setting.scroll_factor
);
var scroll_down = Math.round(
(24 + max_y - widget.overlay.offsetHeight - widget.root.scrollTop) * setting.scroll_factor
);
if (scroll_up > 0) {
widget.root.scrollTop -= scroll_up;
}
else if (scroll_down > 0) {
widget.root.scrollTop += scroll_down;
}
};
var scroll_to_x = function(min_x, max_x) {
var scroll_left = Math.round(
(24 - min_x + widget.root.scrollLeft) * setting.scroll_factor
);
var scroll_down = Math.round(
(24 + max_x - widget.overlay.offsetWidth - widget.root.scrollLeft) * setting.scroll_factor
);
if (scroll_left > 0) {
widget.root.scrollLeft -= scroll_left;
}
else if (scroll_down > 0) {
widget.root.scrollLeft += scroll_down;
}
};
var event_connect = function(target, event, listener) {
target.addEventListener(event, listener, false);
};
var event_release = function(target, event, listener) {
target.removeEventListener(event, listener, false);
};
var event_stop = function(event) {
if (event.preventDefault) {
event.preventDefault();
}
event.stopPropagation();
};
var position_selection = function(position) {
if (position.height < setting.min_height) {
position.height = setting.min_height;
}
if (position.width < setting.min_width) {
position.width = setting.min_width;
}
widget.selection.style.height = position.height + 'px';
widget.selection.style.left = position.left + 'px';
widget.selection.style.top = position.top + 'px';
widget.selection.style.width = position.width + 'px';
};
var action_auto = function() {
var stop = function() {
widget.selection.className = null;
widget.overlay.className = null;
action_maximize_state = null;
event_release(widget.selection, 'mousemove', move);
event_release(widget.selection, 'mousedown', stop);
event_release(widget.overlay, 'mousemove', move);
event_release(widget.overlay, 'mousedown', stop);
};
var move = function(event) {
widget.overlay.style.zIndex = -10000002;
widget.selection.style.zIndex = -10000003;
widget.selection.style.height = 0;
widget.selection.style.left = 0;
widget.selection.style.top = 0;
widget.selection.style.width = 0;
var element = widget.document.elementFromPoint(event.clientX, event.clientY);
position_selection(get_position(element));
widget.overlay.style.zIndex = 10000002;
widget.selection.style.zIndex = 10000003;
};
action_maximize_state = null;
action_maximize();
widget.selection.className = 'x-ray';
widget.overlay.className = 'x-ray';
event_connect(widget.selection, 'mousemove', move);
event_connect(widget.selection, 'mousedown', stop);
event_connect(widget.overlay, 'mousemove', move);
event_connect(widget.overlay, 'mousedown', stop);
};
var action_move = function(event) {
var stop = function() {
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
var position = get_position(widget.selection);
var left = (event.pageX + offsetX);
var top = (event.pageY + offsetY);
var height = position.height;
var width = position.width;
if (left < 0) left = 0;
if (top < 0) top = 0;
if (left + width > widget.root.scrollWidth) {
left = widget.root.scrollWidth - width;
}
if (top + height > widget.root.scrollHeight) {
top = widget.root.scrollHeight - height;
}
scroll_to_y(top, top + height);
scroll_to_x(left, left + width);
widget.selection.style.left = left + 'px';
widget.selection.style.top = top + 'px';
};
if (action_maximize_state != null) return;
var position = get_position(widget.selection);
var offsetX = position.left - event.pageX;
var offsetY = position.top - event.pageY;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Maximze selection:
var action_maximize_state = null;
var action_maximize = function() {
// if (action_maximize_state != null) {
// var position = action_maximize_state;
// var height = position.height;
// var width = position.width;
// var top = position.top;
// var left = position.left;
// action_maximize_state = null;
// }
// else {
// var height = widget.root.scrollHeight;
// var width = widget.root.scrollWidth;
// var top = 0, left = 0;
// action_maximize_state = get_position(widget.selection);
// }
var height = widget.root.scrollHeight;
var width = widget.root.scrollWidth;
var top = 0, left = 0;
action_maximize_state = get_position(widget.selection);
widget.selection.style.height = height + 'px';
widget.selection.style.left = left + 'px';
widget.selection.style.top = top + 'px';
widget.selection.style.width = width + 'px';
};
var init_selection_top = function(event) {
var selection = get_position(widget.selection);
return {
selection: selection,
offset: selection.top - event.pageY,
height: selection.height + selection.top
};
};
var init_selection_bottom = function(event) {
var selection = get_position(widget.selection);
return {
selection: selection,
offset: selection.height - event.pageY
};
};
var init_selection_left = function(event) {
var selection = get_position(widget.selection);
return {
selection: selection,
offset: selection.left - event.pageX,
width: selection.width + selection.left
};
};
var init_selection_right = function(event) {
var selection = get_position(widget.selection);
return {
selection: selection,
offset: selection.width - event.pageX
};
};
var set_selection_top = function(event, context) {
var top = event.pageY + context.offset;
var height = context.height;
if (top < 0) top = 0;
if (height - top < setting.min_height) {
height = setting.min_height;
top = context.height - height;
}
else {
height -= top;
}
scroll_to_y(event.pageY, event.pageY);
widget.selection.style.height = height + 'px';
widget.selection.style.top = top + 'px';
};
var set_selection_bottom = function(event, context) {
var height = (event.pageY + context.offset);
if (height < setting.min_height) {
height = setting.min_height;
}
if (context.selection.top + height > widget.root.scrollHeight) {
height = widget.root.scrollHeight - context.selection.top;
}
scroll_to_y(event.pageY, event.pageY);
widget.selection.style.height = height + 'px';
};
var set_selection_left = function(event, context) {
var left = event.pageX + context.offset;
var width = context.width;
if (left < 0) left = 0;
if (width - left < setting.min_width) {
width = setting.min_width;
left = context.width - width;
}
else {
width -= left;
}
scroll_to_x(event.pageX, event.pageX);
widget.selection.style.width = width + 'px';
widget.selection.style.left = left + 'px';
};
var set_selection_right = function(event, context) {
var width = (event.pageX + context.offset);
if (width < setting.min_width) {
width = setting.min_width;
}
if (context.selection.left + width > widget.root.scrollWidth) {
width = widget.root.scrollWidth - context.selection.left;
}
scroll_to_x(event.pageX, event.pageX);
widget.selection.style.width = width + 'px';
};
// Resize top:
var action_top = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'resize-top');
widget.selection.setAttribute('state', 'resize-top');
set_selection_top(event, context_top);
};
var context_top = init_selection_top(event);
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Resize top left:
var action_top_left = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'resize-top-left');
widget.selection.setAttribute('state', 'resize-top-left');
set_selection_top(event, context_top);
set_selection_left(event, context_left);
};
var context_top = init_selection_top(event);
var context_left = init_selection_left(event);
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Resize top right:
var action_top_right = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'resize-top-right');
widget.selection.setAttribute('state', 'resize-top-right');
set_selection_top(event, context_top);
set_selection_right(event, context_right);
};
var context_top = init_selection_top(event);
var context_right = init_selection_right(event);
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Resize bottom:
var action_bottom = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'resize-bottom');
widget.selection.setAttribute('state', 'resize-bottom');
set_selection_bottom(event, context_bottom);
};
var context_bottom = init_selection_bottom(event);
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Resize bottom left:
var action_bottom_left = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'resize-bottom-left');
widget.selection.setAttribute('state', 'resize-bottom-left');
set_selection_bottom(event, context_bottom);
set_selection_left(event, context_left);
};
var context_bottom = init_selection_bottom(event);
var context_left = init_selection_left(event);
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Resize bottom right:
var action_bottom_right = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'resize-bottom-right');
widget.selection.setAttribute('state', 'resize-bottom-right');
set_selection_bottom(event, context_bottom);
set_selection_right(event, context_right);
};
var context_bottom = init_selection_bottom(event);
var context_right = init_selection_right(event);
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Resize left:
var action_left = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'resize-left');
widget.selection.setAttribute('state', 'resize-left');
set_selection_left(event, context_left);
};
var context_left = init_selection_left(event);
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Resize right:
var action_right = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'resize-right');
widget.selection.setAttribute('state', 'resize-right');
set_selection_right(event, context_right);
};
var context_right = init_selection_right(event);
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Select:
var action_all = function(event) {
var stop = function() {
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
event_release(widget.selection, 'mousemove', move)
event_release(widget.selection, 'mouseup', stop);
event_release(widget.overlay, 'mousemove', move)
event_release(widget.overlay, 'mouseup', stop);
event_release(widget.document, 'mouseleave', stop);
};
var move = function(event) {
widget.overlay.setAttribute('state', 'selecting');
widget.selection.setAttribute('state', 'selecting');
if (start.x < event.pageX) {
var width = event.pageX - start.x;
var left = start.x;
}
else {
var width = start.x - event.pageX;
var left = event.pageX;
}
if (start.y < event.pageY) {
var height = event.pageY - start.y;
var top = start.y;
}
else {
var height = start.y - event.pageY;
var top = event.pageY;
}
if (width < 4) width = 4;
if (height < 4) height = 4;
scroll_to_y(event.pageY, event.pageY);
scroll_to_x(event.pageX, event.pageX);
widget.selection.style.top = top + 'px';
widget.selection.style.left = left + 'px';
widget.selection.style.width = width + 'px';
widget.selection.style.height = height + 'px';
};
var start = {
x: event.pageX,
y: event.pageY
};
action_maximize_state = null;
event_connect(widget.selection, 'mousemove', move)
event_connect(widget.selection, 'mouseup', stop);
event_connect(widget.overlay, 'mousemove', move)
event_connect(widget.overlay, 'mouseup', stop);
event_connect(widget.document, 'mouseleave', stop);
event_stop(event);
};
// Define widgets:
widget.document = window.top.getBrowser().selectedBrowser.contentWindow.document;
widget.window = widget.document.defaultView;
widget.root = widget.document.documentElement;
widget.overlay = widget.document.createElement('ViewPageAsImage-overlay');
widget.selection = widget.document.createElement('ViewPageAsImage-selection');
widget.selection_inner = widget.document.createElement('ViewPageAsImage-selection-inner');
widget.selection_top = widget.document.createElement('ViewPageAsImage-selection-top');
widget.selection_top_left = widget.document.createElement('ViewPageAsImage-selection-top-left');
widget.selection_top_right = widget.document.createElement('ViewPageAsImage-selection-top-right');
widget.selection_bottom = widget.document.createElement('ViewPageAsImage-selection-bottom');
widget.selection_bottom_left = widget.document.createElement('ViewPageAsImage-selection-bottom-left');
widget.selection_bottom_right = widget.document.createElement('ViewPageAsImage-selection-bottom-right');
widget.selection_left = widget.document.createElement('ViewPageAsImage-selection-left');
widget.selection_right = widget.document.createElement('ViewPageAsImage-selection-right');
var styles = widget.document.createElement('link');
styles.setAttribute('rel', 'stylesheet');
styles.setAttribute('href', 'resource://ViewPageAsImage/browser.css');
widget.root.appendChild(styles);
widget.root.appendChild(widget.overlay);
// if (target) {
// var target_position = get_position(target);
// if (target_position.height < setting.min_height) {
// target_position.height = setting.min_height;
// }
// if (target_position.width < setting.min_width) {
// target_position.width = setting.min_width;
// }
// widget.selection.style.height = target_position.height + 'px';
// widget.selection.style.left = target_position.left + 'px';
// widget.selection.style.top = target_position.top + 'px';
// widget.selection.style.width = target_position.width + 'px';
// }
// else {
// widget.selection.style.height = (widget.window.innerHeight * 0.33) + 'px';
// widget.selection.style.left = (widget.window.innerWidth * 0.33) + 'px';
// widget.selection.style.top = (widget.root.scrollTop + (widget.window.innerHeight * 0.33)) + 'px';
// widget.selection.style.width = (widget.window.innerWidth * 0.33) + 'px';
// }
widget.root.appendChild(widget.selection);
widget.selection.appendChild(widget.selection_inner);
widget.selection_inner.appendChild(widget.selection_top);
widget.selection_inner.appendChild(widget.selection_top_left);
widget.selection_inner.appendChild(widget.selection_top_right);
widget.selection_inner.appendChild(widget.selection_bottom);
widget.selection_inner.appendChild(widget.selection_bottom_left);
widget.selection_inner.appendChild(widget.selection_bottom_right);
widget.selection_inner.appendChild(widget.selection_left);
widget.selection_inner.appendChild(widget.selection_right);
widget.overlay.setAttribute('state', '');
widget.selection.setAttribute('state', '');
// Bind actions:
event_connect(widget.overlay, 'mousedown', action_all);
event_connect(widget.selection, 'mousedown', action_move);
event_connect(widget.selection, 'dblclick', action_maximize);
event_connect(widget.selection_top, 'mousedown', action_top);
event_connect(widget.selection_top_left, 'mousedown', action_top_left);
event_connect(widget.selection_top_right, 'mousedown', action_top_right);
event_connect(widget.selection_bottom, 'mousedown', action_bottom);
event_connect(widget.selection_bottom_left, 'mousedown', action_bottom_left);
event_connect(widget.selection_bottom_right, 'mousedown', action_bottom_right);
event_connect(widget.selection_left, 'mousedown', action_left);
event_connect(widget.selection_right, 'mousedown', action_right);
// maximize to capture the whole page.
try {
action_maximize();
}
catch (error) {
alert(error);
}
/*-------------------------------------------------------------------------------------------*/
var capture = function() {
var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'html:canvas');
var context = canvas.getContext('2d');
try {
action_maximize();
}
catch (error) {
alert(error);
}
var selection = get_position(widget.selection);
// canvas.height = selection.height;
// canvas.width = selection.width;
canvas.height = widget.root.scrollHeight;
canvas.width = widget.root.scrollWidth;
widget.overlay.style.display = 'none';
widget.selection.style.display = 'none';
// context.drawWindow(
// widget.window,
// selection.left,
// selection.top,
// selection.width,
// selection.height,
// 'rgb(255, 255, 255)'
// );
context.drawWindow(
widget.window,
0,
0,
widget.root.scrollWidth,
widget.root.scrollHeight,
'rgb(255, 255, 255)'
);
//alert("selection.left: "+selection.left+",selection.top:"+selection.top+",selection.width:"+selection.width+",selection.height:"+selection.height+",widget.root.scrollHeight:"+widget.root.scrollHeight+",widget.root.scrollWidth:"+widget.root.scrollWidth);
widget.overlay.style.display = 'block';
widget.selection.style.display = 'block';
return canvas.toDataURL('image/png', '');
};
var action_close = function(event) {
//event_release(notice, 'command', action_close);
//event_release(widget.window, 'unload', action_close);
//event_release(widget.window, 'keydown', action_keydown);
widget.root.removeChild(styles);
widget.root.removeChild(widget.overlay);
widget.root.removeChild(widget.selection);
//notices.removeAllNotifications(true);
};
var action_save = function() {
try {
// var picker = Components.classes["@mozilla.org/filepicker;1"]
// .createInstance(Components.interfaces.nsIFilePicker);
var io = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
// Create a 'Save As' dialog:
// picker.init(
// window, label.notice + ' ' + filename,
// Components.interfaces.nsIFilePicker.modeSave
// );
// picker.appendFilters(
// Components.interfaces.nsIFilePicker.filterImages
// );
// picker.defaultExtension = '.png';
// picker.defaultString = filename + '.png';
//Show picker, cancel on user interaction:
// if (picker.show() == Components.interfaces.nsIFilePicker.returnCancel) return;
//https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O#Getting_special_files
//get file
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var file = FileUtils.getFile("TmpD", [filename + '.png']);
//alert(file.path);
//debugger;
// Write the file to disk, without a Download dialog:
var source = io.newURI(capture(), 'utf8', null);
var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
.createInstance(Components.interfaces.nsIWebBrowserPersist);
persist.persistFlags = Components.interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_REPLACE_EXISTING_FILES;
persist.persistFlags |= Components.interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION;
//persist.saveURI(source, null, null, null, null, picker.file);
//alert("before persist.saveURI");
persist.saveURI(source, null, null, null, null, file, null);
// All done.
//alert("after persist.saveURI");
//alert(file.path);
action_close();
// load the image
//Components.utils.import("resource://gre/modules/Services.jsm");
//var oReq = new XMLHttpRequest();
//// var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
//var url = services.io.newFileURI(file);
//var url = nsIIOService.newFileURI(file);
var url = io.newFileURI(file);
//window.loadURI(url, null, null);
window.loadURI("file://"+url.path, null, null);
//window.loadURI("file:///d:/linux/browser/firefox/ViewPageAsImage/service.PNG", null, null);
////alert(url.path);
//oReq.open("get", url, true);
//oReq.send();
}
catch (error) {
//alert(label.sizeerror);
alert(error);
}
};
var action_keydown = function(event) {
if (event.keyCode == 27) action_close();
else if (event.keyCode == 13) action_save();
else return;
event_release(widget.window, 'keydown', action_keydown);
};
var append_notice = function() {
return notices.appendNotification(
label.notice + ' ' + filename, 'ViewPageAsImage-controls',
null, notices.PRIORITY_INFO_HIGH, [
{
label: label.autoselect,
callback: function() {
try {
action_auto();
}
catch (error) {
alert(error);
}
return true;
}
},
{
label: label.selectall,
callback: function() {
try {
action_maximize();
}
catch (error) {
alert(error);
}
return true;
}
},
{
label: label.save,
accessKey: label.accesskey,
callback: function() {
try {
action_save();
}
catch (error) {
alert(error);
}
return true;
}
}
]
);
};
//var notices = window.getNotificationBox(widget.window);
var filename1 = (widget.document.title ? widget.document.title : widget.document.URL);
//alert(filename.match("[^A-Za-z0-9_.]"));
var regEx = new RegExp('[,/\:*?""<>|]', 'g');
var filename = filename1.replace(regEx,"_");
//alert(filename);
try {
//var filename = (widget.document.title ? widget.document.title : widget.document.URL);
//String filename1 = filename + "";
//alert("before:"+filename1);
//filename1.replaceAll("[^A-Za-z0-9_.]","_");
//alert("after:"+filename1);
action_save();
}
catch (error) {
alert(error);
}
//var notice = append_notice();
//var notice_allow_close = true;
//event_connect(notice, 'command', action_close);
//event_connect(widget.window, 'unload', action_close);
//event_connect(widget.window, 'keydown', action_keydown);
};
ViewPageAsImage的更多相关文章
随机推荐
- 【Linux命令】Ubuntu14.04+QT5.2配置mysql
安装qt: 官网下载qt5.2.1:qt-opensource-linux-x64-5.2.1.run 直接命令行运行:./qt-opensource-linux-x64-5.2.1.run 选择安装 ...
- JDBC_获取插入记录的主键值
<span style="font-size:24px;">package src.com.JDBC2DAO.java; import static org.junit ...
- PHP学习笔记13-操作Cookie
PHP会话管理图: 创建index.php: <?php /** * Created by PhpStorm. * User: Administrator * Date: 2015/7/1 * ...
- geoserver图层属性查询及查询结果转换为arcgis js api能使用的格式
一个项目使用了ArcGIS JS API开发GIS展示层,但GIS服务使用了Geoserver,这时加载Geoserver数据和查询数据就和之前完全不一样了,以下介绍下我使用ArcGIS JS API ...
- C# Programming Study #2
readonly (C# Reference) readonly 关键字是可以在字段上使用的修饰符. 当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者 ...
- Week14(12月11日):路由
Part I:提问 =========================== 1.Visual Studio 2013自带ASP.NET MVC最高版本为(). A.3 B.4 C.5 D.6 2 ...
- Qt SQL Programming 部分翻译
简介: Qt SQL 是 Qt 的重要模块之一,为了方便,Qt 对 SQL 进行了一系列的封装,并将 SQL API 分为如下三层: (1)驱动层 (2)SQL API ...
- 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)
下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0- ...
- TextView textSize 文字大小
TextView,很常见的控件.关于文字大小的方法有: android.widget.TextView#getTextSize 返回值的单位是PX /** * @return the size (i ...
- spring jdbc 笔记3
spring JDBC 加入对commons-dbcp spring-jdbc spring-tx的依赖 1.数据源的配置 获取数据源在spring中的Bean管理默认已经是单例模式 关闭数据源d ...