hzhbest
千年狐狸
千年狐狸
  • UID22640
  • 注册日期2008-01-15
  • 最后登录2017-04-06
  • 发帖数1763
  • 经验476枚
  • 威望3点
  • 贡献值414点
  • 好评度89点
  • 社区居民
  • 忠实会员
阅读:5518回复:15

【求UC脚本】替代“已关闭标签”和“鼠标手势打开所有链接”

楼主#
更多 发布于:2009-12-14 21:36
“已关闭标签”:
就跟 Undo Close Tabs 或者 TMP 的“已关闭标签”按钮类似的功能,是工具栏按钮式下拉列表,要有按钮组合下拉列表更好(也就是按一下是恢复最近关闭的,按其右边小三角展开下拉列表)。
“鼠标手势打开所有链接”:
跟 AioG 中的功能类似,就是按住鼠标右键拉出手势轨迹,让轨迹经过要打开的链接,然后划一个特定的终结手势再放开右键,那些链接就一次过全部打开。这个功能比 SnapLink 类扩展灵活,可以选中不规则位置的链接。

本来还需要用鼠标手势翻页的脚本,但在隔壁搜到了模拟击键去调用 NextPage 的脚本代码。可惜没有简单的可以整合到鼠标手势脚本中的代码。
FFHEAD
小狐狸
小狐狸
  • UID25176
  • 注册日期2008-07-01
  • 最后登录2011-01-14
  • 发帖数65
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2009-12-14 21:36
“鼠标手势打开所有链接”:firegestures中有这个功能,不过需要按键配合,ctrl或者shift(根据自己的设置)
harnack
狐狸大王
狐狸大王
  • UID25613
  • 注册日期2008-07-27
  • 最后登录2020-01-08
  • 发帖数325
  • 经验19枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 社区居民
2楼#
发布于:2009-12-14 21:36
hzhbest:“已关闭标签”:
就跟 Undo Close Tabs 或者 TMP 的“已关闭标签”按钮类似的功能,是工具栏按钮式下拉列表,要有按钮组合下拉列表更好(也就是按一下是恢复最近关闭的,按其右边小三角展开下拉列表)。
回到原帖


QuChao写的那个脚本不就正好满足楼主的要求吗?既有按钮又有下拉菜单:
http://board.mozest.com/thread-26715-1-1

第二个怕是没有现成的脚本,我是用2楼提到的Firegestures实现的。
听老人说,今生做千件好事,来世方能讨生为猫。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
3楼#
发布于:2009-12-14 21:36
harnack

QuChao写的那个脚本不就正好满足楼主的要求吗?既有按钮又有下拉菜单:
http://board.mozest.com/thread-26715-1-1

第二个怕是没有现成的脚本,我是用2楼提到的Firegestures实现的。
回到原帖

转过来吧附件看不到。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
harnack
狐狸大王
狐狸大王
  • UID25613
  • 注册日期2008-07-27
  • 最后登录2020-01-08
  • 发帖数325
  • 经验19枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 社区居民
4楼#
发布于:2009-12-14 21:36
可是我发现这里现在发帖无法上传附件了。
听老人说,今生做千件好事,来世方能讨生为猫。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
5楼#
发布于:2009-12-14 21:36
不是纯文本吗?
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
harnack
狐狸大王
狐狸大王
  • UID25613
  • 注册日期2008-07-27
  • 最后登录2020-01-08
  • 发帖数325
  • 经验19枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 社区居民
6楼#
发布于:2009-12-14 21:36
这倒是哦。
// ==UserScript==
// @name           Undo Close Tab Menu
// @namespace      http://www.quchao.com/
// @description    Adding a menu of available undo Close tabs.
// @include        main
// @compatibility  Firefox 2.0 3.0.*
// @author         Qu Chao (Chappell.Wat) <Chappell.Wat@Gmail.com>
// @version        1.0
// @Note
// ==/UserScript==
// Released under the GPL license
//  http://www.gnu.org/copyleft/gpl.html
// ver 1.0 @ 2008-11-15
//  Initialize release

(function() {

	if (Ci.nsISessionStore) {
		// toolbar button
		var undoButton = document.createElement('toolbarbutton');
		undoButton.id='undoCloseTabToolButton';
		undoButton.setAttribute('label', 'Undo Close Tab');
		undoButton.setAttribute('tooltiptext', 'Undo Close Tab');
		undoButton.setAttribute('type', 'menu-button');
		undoButton.addEventListener('command', function (evt) {
			undoCloseTab();
			evt.stopPropagation();
		}, false);
		undoButton.style.listStyleImage = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAABj0lEQVR42mNgwAGOLGD4z0AO2D%2BXQQSkmSwDaitZBUEaf39eS7oByJp%2FP1H9D3PFvoXCz3fPFz2%2Fe6H0kpoqNm6Cmr89NPz%2F67HC%2F19viv%2F%2Fep3%2F%2F%2FuLPCDO%2BbFnociVg4tFrgLVyqBr5oJrfqD%2F%2F%2Fsjo%2F8fb2v%2B%2Fwpkg%2BjHZ8X%2Bv7lp9v%2Fb88z%2Fj885%2Fju4WPgJUI8RSmjDNP8Aav4OxTADXlyShWOQQQ%2FPOvzfu1DsFMhisAF1MOe%2FrQQb8OW%2Bzv9rB1jgGNmA%2Bye4%2F39%2BmvX%2F6GrpH3sWiJ7GDIO3Zf9vHWYB0z9fZaLg73dZgQZw%2Fb9xiP3%2F6zv5%2F%2Fcvlv6CPSCBmkEYFgtwvJLx%2F7uHef%2Fvn%2BT%2F%2F%2BlJ5v8DS6R%2B4I4NqAFI4WSwcyZDAJA%2B%2BfVZ7v%2F3j8r%2BH1wsiTud4EqJB%2BcxSJ1Yw%2FT%2F0%2FOOf4cWCeJPaLhS4ulVfP9e3or9d2CZ8nuSkzrQUKXbR5z%2F3DjqDDKgnhwDYl%2FdTtt0aJngOrJy6uFlEplHlktlAg2SgIkBANtzTyodfhmFAAAAAElFTkSuQmCC)';

		// menu popup
		var undoPopup = undoButton.appendChild(document.createElement('menupopup')),
			ISS = Cc['@mozilla.org/browser/sessionstore;1'].getService(Ci.nsISessionStore);
		undoPopup.id='undoCloseTabMenuPopup';
		undoButton.addEventListener('popupshowing', function (evt) {
			while (undoPopup.hasChildNodes())	{
				undoPopup.removeChild(undoPopup.lastChild);
			}

			var undoItems = eval('(' + ISS.getClosedTabData(window) + ')'),
				undoItemLen = undoItems.length,
				menuItem;
			if (0 < undoItemLen) {
				for (var i = 0; i < undoItemLen; i ++) {
					var key = (9 > i) ? i + 1 : ((9 === i) ? '0' : '');
					menuItem = undoPopup.appendChild(document.createElement('menuitem'));
					menuItem.setAttribute('label', ((key) ? key + ': ' : '') + undoItems[i].title);
					menuItem.setAttribute('tooltiptext', undoItems[i].title);
					if (undoItems[i].image) {
						menuItem.setAttribute('image', undoItems[i].image);
					}
					menuItem.setAttribute('accesskey', key);
					menuItem.setAttribute('class', 'menuitem-iconic bookmark-item');
					(function() {
						var p = i;
						menuItem.addEventListener('command', function (evt) {
							undoCloseTab(p);
							evt.stopPropagation();
						}, false);
					})();
				}
			}
		}, false);

		var insertAnchor = document.getElementById('home-button');
		if (insertAnchor.parentNode === insertAnchor) {
			insertAnchor.parentNode.appendChild(undoButton);
		} else {
			insertAnchor.parentNode.insertBefore(undoButton, insertAnchor.nextSibling);
		}
	}

})();
听老人说,今生做千件好事,来世方能讨生为猫。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
7楼#
发布于:2009-12-14 21:36
奇怪,仔细存成了uc.js文件,放在其他脚本目录下,重启Firefox,看JS控制台信息栏,没有载入……
不过我的UCJS总是有些脚本无法载入。跟Firefox版本兼容性的问题?
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
harnack
狐狸大王
狐狸大王
  • UID25613
  • 注册日期2008-07-27
  • 最后登录2020-01-08
  • 发帖数325
  • 经验19枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 社区居民
8楼#
发布于:2009-12-14 21:36
“其他脚本目录”是指什么?恐怕是在UserChrome.js里没有正确将该目录里的文件加载吧。
听老人说,今生做千件好事,来世方能讨生为猫。
ferret
千年狐狸
千年狐狸
  • UID21816
  • 注册日期2007-11-11
  • 最后登录2013-03-22
  • 发帖数1114
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2009-12-14 21:36
var insertAnchor = document.getElementById('home-button');
脚本需要有主页按钮才能显示那个图标。
其实undo closed tabs这个扩展没什么不好的啊,跟quchao这个脚本不是一样的效果么。
hzhbest
千年狐狸
千年狐狸
  • UID22640
  • 注册日期2008-01-15
  • 最后登录2017-04-06
  • 发帖数1763
  • 经验476枚
  • 威望3点
  • 贡献值414点
  • 好评度89点
  • 社区居民
  • 忠实会员
10楼#
发布于:2009-12-14 21:36
给kmc:那个脚本文件:
http://www.box.net/shared/5q7p1yxfyz

嗯,谢谢大家了,看来非要用到那功能的话就非要装上 AioG 或者 FG 了,或者得习惯 Multi Links 了。
最大限度脚本化的配置现在“封测”中。……
---
ferret:var insertAnchor = document.getElementById('home-button');
脚本需要有主页按钮才能显示那个图标。
其实undo closed tabs这个扩展没什么不好的啊,跟quchao这个脚本不是一样的效果么。
回到原帖

既然一样的效果,当然能省即省吧。
多谢提醒!想把那按钮定位到其他位置的话,可以把“home-button”改成其他 ID,例如地址栏右边的话是“urlbar-container”,搜索栏右边的话是“search-container”。用 DOMi 找就是了。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
11楼#
发布于:2009-12-14 21:36
harnack:“其他脚本目录”是指什么?恐怕是在UserChrome.js里没有正确将该目录里的文件加载吧。回到原帖

没写好,是“跟其他脚本放在同一目录”

@hzhbest: 依然出不来。我用UCJS虽然不多,但是一直都是有些脚本可以,有些脚本不行
(都放在同一目录下的),JS控制台里面提示载入了其他脚本,但没有载入这个脚本。
不知道你们有没有类似的经验。这个Menu本来应该出现在哪里呢?
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
ithinc
狐狸大王
狐狸大王
  • UID22844
  • 注册日期2008-02-04
  • 最后登录2014-09-28
  • 发帖数371
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
12楼#
发布于:2009-12-14 21:36
撤销关闭标签页按钮,这个代码要简洁一些,完全复制历史菜单的最近关闭标签页列表功能,可以一次性全部恢复,另外按钮增加了disabled状态。本脚本功能已包含在openNewTabLite脚本中。

/* :::: 撤销关闭标签页按钮 :::: */

(function() {
  var refNode = document.getElementById('home-button');
  if (refNode) {
    var undoCloseTabButton = refNode.parentNode.insertBefore(document.createElement("toolbarbutton"), refNode.nextSibling);
    undoCloseTabButton.setAttribute("id", "undoclosetab-button");
    undoCloseTabButton.setAttribute("class", "toolbarbutton-1 chromeclass-toolbar-additional");
    undoCloseTabButton.setAttribute("label", "Undo Close Tab");
    undoCloseTabButton.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAASAAAADAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcuFA06Yy0bw0YcFHIAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASXS8cpNejNf+zfCj9TCIWkgAAABkAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAFWk1Hr7nvkj//+BH/7eALP9DGxeDAAAAFAAAAAIAAAAAAAAACB0NCCYfDAc3HAsGOBwMBjgcDAc4HQwHNw0FAzkqDwt0hlIr7vnUVv//2Uv/jVYn8DcXD14AAAAMAAAAAAAAABlqNCLYlGZS+5VoUfeUZkz3lGVJ95VlRveWZUL4iVY19U8hFsOOWzHw/dhf/+3CTP90QSHXAAAAIgAAAAMAAAAjdkMx7/jx5P///Ob///TT///0yf//9sH///66/9vEh/9LIhijLhEOfLiKSvz/7W//y5xH/0UdE3sAAAAMAAAAJHVDMuz49fT////9////8P/o2L3/p31g/bONavuoe1j/VikZlQAAADFnNyHR99R2//DLaP9hMB7CAAAAGAAAACR1QzLs+PX0////////////+fTp/4xeTPw6EASvMBMLbjIXDzYAAAAhVCgYtePAeP//5of/hFQy3wAAACAAAAAkdUMy7Pz7+//g087/q4l9///////49O//mXNj8U0hE6UPBgM8BQIBPWk5Jdby2Jv///Sk/6h8Tu0AAAAjAAAAJHVDMuz+/f3/28zH/1klFNuSal309fHw///////dzcT/pYJy8ZJrWOrbw6H+//XC///ytf+SZ0XlAAAAIQAAACN2QzLu/v39/97Py/9LJBamNRIHfpt1avT28vH//////////v////T///7n////3P/q2bH/ZjIiwwAAABcAAAAabzop3bugl/uwjoP/VSkZkAAAACE2FQ1ddko62cSspP7s5OH//Pr4//v27f/jz73/i2JJ6C4aB00AAAAJAAAACSEPCSkjDgY/NhYMSyURDCMAAAAHAAAADAAAACE9GQ1wZzQk04FPP/h9STn1Vy8WuCQUBUEAAAAOAAAAAQAAAAAAAAABAAAAAwAAAAQAAAACAAAAAAAAAAAAAAADAAAADAAAABsAAAAkAAAAIwAAABYAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/g8AAP4HAAD+AwAAgAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAQAA//8AAA==");
    undoCloseTabButton.setAttribute("tooltiptext", "Undo Close Tab");
    undoCloseTabButton.setAttribute("command", "History:UndoCloseTab");
    undoCloseTabButton.setAttribute("type", "menu-button");
    undoCloseTabButton.appendChild(document.createElement("menupopup")).setAttribute("onpopupshowing", "this.parentNode.populateUndoSubmenu();");
    eval("undoCloseTabButton.populateUndoSubmenu = " + HistoryMenu.populateUndoSubmenu.toString()
      .replace(/this/g, 'HistoryMenu')
      .replace('document.getElementById("historyUndoPopup")', 'this.firstChild')
    );

    var ss = document.styleSheets[document.styleSheets.length-1];
    ss.insertRule('#undoclosetab-button[disabled="true"] {opacity: 0.5 !important;}', ss.cssRules.length);
    gBrowser.mTabContainer.addEventListener("TabClose", function() {
      document.getElementById("undoclosetab-button").disabled = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore).getClosedTabCount(window) == 0;
    }, false);
    gBrowser.mTabContainer.addEventListener("SSTabRestoring", function() {
      document.getElementById("undoclosetab-button").disabled = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore).getClosedTabCount(window) == 0;
    }, false);
  }
})();
Tab Utilities的功能要求,请提交到http://tabutils.uservoice.com
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
13楼#
发布于:2009-12-14 21:36
楼上的能用,开始的时候变成了一个Home按钮
(看代码也似乎可以证明,但为什么要“附体”到
Home按钮上先呢?),再重启,真正的按钮出
现在Home按钮的右边,再把Home按钮拖回去。

可能是因为我默认不显示Home按钮吧。再重启
又没有了,一定要挂在某个按钮旁边?
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
harnack
狐狸大王
狐狸大王
  • UID25613
  • 注册日期2008-07-27
  • 最后登录2020-01-08
  • 发帖数325
  • 经验19枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 社区居民
14楼#
发布于:2009-12-14 21:36
Home拖回去后肯定不行的,得自己改下var refNode = document.getElementById('home-button'); 这句,想放在谁后面就把home-button改成谁。
听老人说,今生做千件好事,来世方能讨生为猫。
上一页
游客

返回顶部