阅读:5518回复:15
【求UC脚本】替代“已关闭标签”和“鼠标手势打开所有链接”
“已关闭标签”:
就跟 Undo Close Tabs 或者 TMP 的“已关闭标签”按钮类似的功能,是工具栏按钮式下拉列表,要有按钮组合下拉列表更好(也就是按一下是恢复最近关闭的,按其右边小三角展开下拉列表)。 “鼠标手势打开所有链接”: 跟 AioG 中的功能类似,就是按住鼠标右键拉出手势轨迹,让轨迹经过要打开的链接,然后划一个特定的终结手势再放开右键,那些链接就一次过全部打开。这个功能比 SnapLink 类扩展灵活,可以选中不规则位置的链接。 本来还需要用鼠标手势翻页的脚本,但在隔壁搜到了模拟击键去调用 NextPage 的脚本代码。可惜没有简单的可以整合到鼠标手势脚本中的代码。 |
|
|
1楼#
发布于:2009-12-14 21:36
“鼠标手势打开所有链接”:firegestures中有这个功能,不过需要按键配合,ctrl或者shift(根据自己的设置)
|
|
2楼#
发布于:2009-12-14 21:36
hzhbest:“已关闭标签”: QuChao写的那个脚本不就正好满足楼主的要求吗?既有按钮又有下拉菜单: http://board.mozest.com/thread-26715-1-1 第二个怕是没有现成的脚本,我是用2楼提到的Firegestures实现的。 |
|
|
3楼#
发布于:2009-12-14 21:36
harnack: 转过来吧附件看不到。 |
|
|
4楼#
发布于:2009-12-14 21:36
可是我发现这里现在发帖无法上传附件了。
|
|
|
5楼#
发布于:2009-12-14 21:36
不是纯文本吗?
|
|
|
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); } } })(); |
|
|
7楼#
发布于:2009-12-14 21:36
奇怪,仔细存成了uc.js文件,放在其他脚本目录下,重启Firefox,看JS控制台信息栏,没有载入……
不过我的UCJS总是有些脚本无法载入。跟Firefox版本兼容性的问题? |
|
|
8楼#
发布于:2009-12-14 21:36
“其他脚本目录”是指什么?恐怕是在UserChrome.js里没有正确将该目录里的文件加载吧。
|
|
|
9楼#
发布于:2009-12-14 21:36
var insertAnchor = document.getElementById('home-button');
脚本需要有主页按钮才能显示那个图标。 其实undo closed tabs这个扩展没什么不好的啊,跟quchao这个脚本不是一样的效果么。 |
|
10楼#
发布于:2009-12-14 21:36
给kmc:那个脚本文件:
http://www.box.net/shared/5q7p1yxfyz 嗯,谢谢大家了,看来非要用到那功能的话就非要装上 AioG 或者 FG 了,或者得习惯 Multi Links 了。 最大限度脚本化的配置现在“封测”中。…… --- ferret:var insertAnchor = document.getElementById('home-button'); 既然一样的效果,当然能省即省吧。 多谢提醒!想把那按钮定位到其他位置的话,可以把“home-button”改成其他 ID,例如地址栏右边的话是“urlbar-container”,搜索栏右边的话是“search-container”。用 DOMi 找就是了。 |
|
|
11楼#
发布于:2009-12-14 21:36
|
|
|
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); } })(); |
|
|
13楼#
发布于:2009-12-14 21:36
楼上的能用,开始的时候变成了一个Home按钮
(看代码也似乎可以证明,但为什么要“附体”到 Home按钮上先呢?),再重启,真正的按钮出 现在Home按钮的右边,再把Home按钮拖回去。 可能是因为我默认不显示Home按钮吧。再重启 又没有了,一定要挂在某个按钮旁边? |
|
|
14楼#
发布于:2009-12-14 21:36
Home拖回去后肯定不行的,得自己改下var refNode = document.getElementById('home-button'); 这句,想放在谁后面就把home-button改成谁。
|
|
|
上一页
下一页