agate
小狐狸
小狐狸
  • UID327
  • 注册日期2004-11-29
  • 最后登录2018-12-23
  • 发帖数72
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:3451回复:7

请问能否给这个截图脚本加上鼠标手势或快捷键呢?

楼主#
更多 发布于:2010-01-18 12:22
很好用的一个网页截屏脚本,可以把整幅(从头到脚)网页另存为图片
可惜每次要到菜单里去点——我的菜单设置ALT打开的,比较麻烦。
请问各位达人能否给这脚本加上鼠标手势或快捷键?或者另推荐一款脚本也好啊
多谢啦 :)

// ==UserScript==
// @name        Capture Web Page for userChrome.js
// @include     main
// @include     chrome://browser/content/browser.xul
// ==/UserScript==

/*
网页截图 - Griever - http://d.hatena.ne.jp/Griever/20081222/1229958279
を勝手にuserChrome.js化
*/

//ページ全体をキャプチャ
(function(){

	var captureMenu = document.createElement("menuitem");
	captureMenu.setAttribute("label","Capture This Page");
	captureMenu.addEventListener("command",function(){
	    var win = window.content;
	    var w = win.document.width;
	    var h = win.document.height;
	
		var pos = document.getElementById('status-bar');
		var scrollbox = document.createElement('scrollbox');
		scrollbox.width = '1';
		scrollbox.height = '1';
		pos.appendChild(scrollbox);
	
	    var canvas = win.document.createElement('canvas');
	    canvas.style.display = 'inline';
	    canvas.width = w;
	    canvas.height = h;
	    scrollbox.appendChild(canvas);
	
	    var ctx = canvas.getContext("2d");
	    ctx.clearRect(0, 0, canvas.width, canvas.height);
	    ctx.save();
	    ctx.scale(1.0, 1.0);
	    ctx.drawWindow(win, 0, 0, w, h, "rgb(255,255,255)");
	    ctx.restore();
	
	    var url = canvas.toDataURL("image/png");
		const IO_SERVICE = Components.classes['@mozilla.org/network/io-service;1']
                   .getService(Components.interfaces.nsIIOService);
		url = IO_SERVICE.newURI(url, null, null);

		var fp = Components.classes['@mozilla.org/filepicker;1']
		          .createInstance(Components.interfaces.nsIFilePicker);
		fp.init(window, "Save Screenshot As", fp.modeSave);
		fp.appendFilters(fp.filterImages);
		fp.defaultExtension = "png";
		fp.defaultString = win.document.title + ".png";
		if ( fp.show() == fp.returnCancel || !fp.file ) return;

		var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1']
         	 .createInstance(Components.interfaces.nsIWebBrowserPersist);
		wbp.saveURI(url, null, null, null, null, fp.file);

	    pos.removeChild(scrollbox);
	},false);

	document.getElementById("menu_ToolsPopup").insertBefore(
		captureMenu,
		document.getElementById("sanitizeSeparator"));
})();
agate
小狐狸
小狐狸
  • UID327
  • 注册日期2004-11-29
  • 最后登录2018-12-23
  • 发帖数72
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2010-01-18 12:22
找了个截屏脚本WebScreenShot.uc.xul
可惜在我机器上导致FF死掉……cpu占用50%,内存飙升……也没有快捷、手势之类的……
达人现身啊,呵呵
多谢
agate
小狐狸
小狐狸
  • UID327
  • 注册日期2004-11-29
  • 最后登录2018-12-23
  • 发帖数72
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2010-01-18 12:22
哈哈,多谢xelnaga

我用过screengrab,它的全页面截屏不能用……怪哉

我把你给我的代码一股脑扔到“MouseGestures.uc.js”(http://www.xuldev.org/misc/ucjs.php)里面了……

居然都好用,哈哈,多谢多谢

只是划手势的时候以前状态栏里的中文提示“鼠标手势:……”变成了英文的“Gesture:……”

我自己到脚本里找这个单词,改成中文(用EditPlus修改),出来的是乱码……汗

请问大侠,我直接粘贴到MouseGestures.uc.js里面是否有多余的代码呢?要删掉点什么吗?

多谢~~~
agate
小狐狸
小狐狸
  • UID327
  • 注册日期2004-11-29
  • 最后登录2018-12-23
  • 发帖数72
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2010-01-18 12:22
多谢xelnaga大侠

在这里已经解决了,呵呵
http://board.mozest.com/thread-33146-1-1

多谢
游客

返回顶部