本站不兼容 8 以前的版本的 Interner Explorer 浏览器(或基于这些版本的 IE 的其他浏览器),并且页面样式不完全兼容 IE 8,我们建议你升级至 IE 9 或改用其他非 IE 浏览器

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

转播到腾讯微博
返回列表 回复 发帖

[原创发布] 让书签、历史、URL、搜索在新的标签页打开²【0.1】

本帖最后由 我行我速 于 2010-1-12 17:00 编辑

本脚本目前实现了以下功能:
1。地址栏、搜索栏、书签菜单、书签工具栏、书签侧边栏、历史菜单、历史侧边栏、主页按钮:左键在新标签页打开,中键在新标签页后台打开,Ctrl+左键在当前标签页打开(Bookmarklet总在当前标签页打开);
2。地址栏回车键在新标签页打开,Alt+回车键在当前标签页打开(搜索栏设置browser.search.openintab为true可实现回车键在新标签打开,Alt+回车键在当前标签页打开);
3。新建标签页时利用已有空白标签页,自动关闭多余的新建空白标签页;
4。在当前标签页的右侧打开新标签页,连续打开后台标签时保持原有顺序;
5。关闭标签页时选择左侧/右侧/第一个/最后一个/最后打开的标签;
6。关闭标签页时激活上次浏览的标签,Ctrl+Tab切换到上次浏览的标签;
7。高亮标记未读标签,关闭标签页时选择下一个未读标签
8。双击关闭标签页,中键恢复上一个关闭的标签页,标签页右键菜单增加最近关闭标签页列表,导航栏增加撤销关闭标签页按钮
9。所有链接在新标签中打开,状态栏增加总是在新标签打开链接与总是激活新标签按钮
10。复制标签页。
11。保护标签页、锁定标签页、冻结标签页。
12。图标化标签页。
13。隐藏标签页。
14。在新标签打开链接时继承历史,在新标签打开浏览历史时继承历史。
15。单窗口模式。

openNewTabLite最简版

选项设置:
browser.search.openintab: 搜索栏在新标签打开,缺省值为false
browser.tabs.loadBookmarksInBackground: 书签/历史等新标签在后台打开,缺省值为false
-------------------------------------------------------------------------------------------------------------------------------------
userChromeJS.openNewTabLite.openBookmarksInTab: 书签/历史等在新标签打开,缺省值为true
userChromeJS.openNewTabLite.openUrlInTab: 地址栏在新标签打开,缺省值为true
userChromeJS.openNewTabLite.loadUrlInBackground: 地址栏新标签在后台打开,缺省值为false
userChromeJS.openNewTabLite.loadSearchInBackground: 搜索栏新标签在后台打开,缺省值为true
userChromeJS.openNewTabLite.reuseBlank.current: 自动利用当前空白标签页,缺省值为true
userChromeJS.openNewTabLite.reuseBlank.last: 自动利用尾部空白标签页,缺省值为true
userChromeJS.openNewTabLite.reuseBlank.all: 自动利用所有空白标签页,缺省值为false
userChromeJS.openNewTabLite.openTabNext: 在当前标签页的右侧打开新标签页,缺省值为true
userChromeJS.openNewTabLite.openTabNext.linkonly: 仅链接有效,缺省值为false
userChromeJS.openNewTabLite.openTabNextInverse: 连续打开后台标签时保持原有顺序,缺省值为true
userChromeJS.openNewTabLite.selectLastOnClose: 关闭标签页时激活上次浏览的标签,缺省值为true
userChromeJS.openNewTabLite.selectUnreadOnClose: 关闭标签页时选择下一个未读标签,缺省值为true
userChromeJS.openNewTabLite.selectOnClose: 0=Right, 1=Left, 2=First, 3=Last, 4=Last Opened, 缺省值为0
userChromeJS.openNewTabLite.loadOnNewTab: 0=Blank Page, 1=Home Page, 2=User Defined URL, 缺省值为0
userChromeJS.openNewTabLite.loadOnNewTab.userDefinedURL:
userChromeJS.openNewTabLite.openDuplicateNext: 在原标签页的右侧打开复制标签页,缺省值为true
userChromeJS.openNewTabLite.loadDuplicateInBackground: 在后台打开复制标签页,缺省值为false
userChromeJS.openNewTabLite.openAllLinksInTab: 所有链接在新标签打开,缺省值为false
userChromeJS.openNewTabLite.openLinkWithHistory: 在新标签打开链接时继承历史,缺省值为false
userChromeJS.openNewTabLite.openHistoryWithHistory: 在新标签打开浏览历史时继承历史,缺省值为false
userChromeJS.openNewTabLite.singleWindowMode: 单窗口模式,缺省值为false

userChrome.css配置:
  1. #content tab[unread="true"] { /* 未读标签页 */
  2.   color: red !important;
  3.   font-style: italic !important;
  4. }

  5. #content tab[protected="true"] .tab-close-button { /* 保护标签页 */
  6.   display: -moz-box !important;
  7.   list-style-image: url(chrome://browser/skin/Secure.png) !important;
  8.   -moz-image-region: rect(1px, 15px, 15px, 1px) !important;
  9. }

  10. #content tab[locked="true"] { /* 锁定标签页 */
  11.   outline: solid red 1px !important;
  12.   outline-offset: -1px !important;
  13.   -moz-outline-radius: 8px !important;
  14. }

  15. #content tab[faviconized="true"] .tab-text { /* 图标化标签页 */
  16.   display: none !important;
  17. }

  18. #content tab[faviconized="true"]:not([protected="true"]) .tab-close-button {
  19.   display: none !important;
  20. }
复制代码
本脚本参考了golf-at大大的让书签 、 历史 、 url 、 搜索在新的标签页打开(uc.js脚本)和其他诸多相关脚本,在此一并致谢。

更新历史:
// @version        20100112.0.1    拆分为openNewTabLite.uc.js/openNewTabLite.uc.xul/tabUtils.uc.js三个文件
// @version        20100112.0.0.51 增加loadOnNewTab/openDuplicateNext/loadDuplicateInBackground等选项
// @version        20100110.0.0.50 增加openBookmarksInTab/openUrlInTab/loadUrlInBackground/loadSearchInBackground等选项
// @version        20091227.0.0.49 增加关闭标签页时选择左侧/右侧/第一个/最后一个/最后打开的标签
// @version        20091225.0.0.48 移除复制标签页、保护标签页、锁定标签页等功能(将合并到tabClickingOptions脚本)
// @version        20091224.0.0.47 关闭标签页时选择左侧标签
// @version        20091223.0.0.46 状态栏增加总是在新标签打开链接与总是激活新标签两个按钮
// @version        20091222.0.0.45 修正撤销关闭下拉菜单同时打开两个已关闭标签页的BUG
// @version        20091219.0.0.44 单击当前标签页弹出浏览历史菜单
// @version        20091215.0.0.43 标签页右键菜单增加最近关闭标签页列表(不再移动历史菜单上的最近关闭标签页列表)
// @version        20091215.0.0.42 撤销关闭标签页按钮增加下拉菜单
// @version        20091210.0.0.41 部分功能增加快捷键
// @version        20091210.0.0.40 Ctrl+Tab切换的两种模式
// @version        20091209.0.0.39 中文菜单
// @version        20091209.0.0.38 单窗口模式下隐藏相关菜单项
// @version        20091209.0.0.37 自动创建about:config配置项
// @version        20091209.0.0.36 改进撤销关闭标签页按钮的安装位置
// @version        20091208.0.0.35 单窗口模式
// @version        20091208.0.0.34 在新标签打开链接时继承历史
// @version        20091208.0.0.33 删除所有链接在当前标签打开的选项(设置browser.link.open_newwindow=1即可)
// @version        20091206.0.0.32 增加所有链接在当前标签打开的选项
// @version        20091206.0.0.31 Ctrl+Tab切换到上次浏览的标签
// @version        20091206.0.0.30 修复图标化标签页导致其他标签页关闭按钮显示不正常的BUG
// @version        20091205.0.0.29 增加隐藏标签页功能
// @version        20091205.0.0.28 增加图标化标签页功能
// @version        20091205.0.0.27 增加保护标签页、锁定标签页功能
// @version        20091204.0.0.26 导航栏增加撤销关闭标签页按钮
// @version        20091204.0.0.25 改进未读标签的标记
// @version        20091203.0.0.24 标签页右键菜单增加复制标签页
// @version        20091201.0.0.23 地址栏回车键新标签根据userChromeJS.openNewTabLite.loadUrlInBackground在后台打开
// @version        20091201.0.0.22 修复3.6b5pre下地址栏回车键新标签无法后台打开的BUG
// @version        20091201.0.0.21 修复3.6b5pre下空白标签页时不能打开单个url的BUG
// @version        20091201.0.0.20 修复3.5.5下关闭最后一个标签的BUG
// @version        20091130.0.0.19 文件菜单打开文件命令在新标签页打开
// @version        20091130.0.0.18 地址栏回车键新标签根据browser.tabs.loadInBackground在后台打开
// @version        20091129.0.0.17 修复3.1b3/3.5b4pre下关闭最后一个标签的BUG
// @version        20090503.0.0.16 openUILinkIn函数增加tabhidden与sidebar两个选项
// @version        20090503.0.0.15 Tagsifter侧边栏在新标签打开
// @version        20090426.0.0.14 增加所有链接在新标签打开的选项
// @version        20090426.0.0.13 关闭标签页时选择下一个未读标签
// @version        20090426.0.0.12 连续打开后台标签时保持原有顺序
// @version        20090423.0.0.11 在当前标签页的右侧打开新标签页
// @version        20090423.0.0.10 关闭标签页时激活上次浏览的标签功能兼容Fx 3.1b3/3.5b4pre
// @version        20090422.0.0.9 关闭标签页时激活上次浏览的标签
// @version        20090422.0.0.8 总在当前标签页打开Bookmarklet
// @version        20090421.0.0.7 允许利用已有访问历史的空白标签页
// @version        20090421.0.0.6 隐藏历史菜单上可能多余的分隔线
// @version        20090421.0.0.5 undoCloseTab/duplicateTab不使用已有空白标签页
// @version        20090421.0.0.4 新建标签页时利用已有空白标签页、自动关闭多余的新建空白标签页
// @version        20090420.0.0.3 书签、历史侧边栏在新标签打开
// @version        20090418.0.0.2 修复Location Bar2在新标签打开的问题
// @version        20090418.0.0.1 Initial release
附件: 您所在的用户组无法下载或查看附件
虽然用的只是简化版本,强力丁页!!!!!!!!
女子东西的说!!!!!!
顺便建议lz大大开汇总整理贴~
all in one sidebar 的侧栏书签打开可在新标签打开吗?
强力支持了。
本帖最后由 tiramn2 于 2009-4-18 18:46 编辑

解决了!感谢~

openNewTabLite最简版【20100112更新代码,附件未更新】

本帖最后由 我行我速 于 2010-1-12 14:21 编辑
  1. //地址栏、搜索栏、书签菜单、书签工具栏、历史菜单、主页按钮
  2. //左键在新标签页打开
  3. eval("whereToOpenLink = " + whereToOpenLink.toString()
  4.   .replace(/return "current";/g, (function() {
  5.     if (gBrowser.currentURI.spec == "about:blank" && !gBrowser.selectedTab.hasAttribute("busy"))
  6.       return "current";
  7.     var node = e && e.originalTarget;
  8.     while (node) {
  9.       switch (node.id) {
  10.         case "identity-box":
  11.         case "go-button":
  12.         case "PopupAutoCompleteRichResult": //地址栏下拉菜单
  13.         case "searchbar":
  14.         case "PopupAutoComplete": //搜索栏下拉菜单
  15.         case "bookmarksMenu":
  16.         case "bookmarksBarContent":
  17.         case "history-menu":
  18.         case "home-button":
  19.           return "tab";
  20.       }
  21.       node = node.parentNode;
  22.     }
  23.     return "current";
  24.   }).toString().replace(/^function.*{|}$/g, ""))
  25. );

  26. //总在当前标签页打开Bookmarklet
  27. eval("openUILinkIn = " + openUILinkIn.toString()
  28.   .replace(/(?=if \(where == "save"\))/, 'if (url.match(/^javascript:/)) where = "current";')
  29. );

  30. //书签、历史侧边栏
  31. document.getElementById("sidebar-box").addEventListener("load", function(event) {
  32.   var document = event.target;
  33.   if (document.location == "chrome://browser/content/bookmarks/bookmarksPanel.xul"
  34.       || document.location == "chrome://browser/content/history/history-panel.xul") {
  35.     eval("document.defaultView.whereToOpenLink = " + document.defaultView.whereToOpenLink.toString()
  36.       .replace(/return "current";/g, 'return "tab";')
  37.     );
  38.     eval("document.defaultView.openUILinkIn = " + document.defaultView.openUILinkIn.toString()
  39.       .replace(/(?=if \(where == "save"\))/, 'if (url.match(/^javascript:/)) where = "current";')
  40.     );
  41.   }
  42. }, true);

  43. //地址栏回车键在新标签页打开,Alt+回车键在当前标签页打开
  44. if ("BrowserLoadURL" in window) { //Firefox 3.0.x
  45.   eval("BrowserLoadURL = " + BrowserLoadURL.toString()
  46.     .replace(/(?=openUILink)/, "handleURLBarRevert();content.focus();")
  47.     .replace("aTriggeringEvent && aTriggeringEvent.altKey", "!(aTriggeringEvent && aTriggeringEvent.altKey)")
  48.   );
  49. }
  50. else { //Firefox 3.5b4pre
  51.   eval("gURLBar.handleCommand = " + gURLBar.handleCommand.toString()
  52.     .replace(/(?=openUILink)/, "this.handleRevert();content.focus();")
  53.     .replace("aTriggeringEvent && aTriggeringEvent.altKey", "!(aTriggeringEvent && aTriggeringEvent.altKey)")
  54.   );
  55. }
复制代码
附件: 您所在的用户组无法下载或查看附件
all in one sidebar 的侧栏书签打开可在新标签打开吗?
ubcw8583 发表于 2009-4-18 18:08
强烈支持一下,请楼主解决一下侧边栏书签新标签打开的问题,把此脚本扩充一下
本帖最后由 nettrottist 于 2009-4-18 19:23 编辑

这个真不错,不仅比原来的open new tab强,比BHNewTab脚本功能也有增强。另外此脚本还集成了一个双击关闭标签页的功能,又可以省掉一个脚本了。

我这里有个有趣的现象:
对于用ctrl+H和ctrl+B调出的侧边栏形式的历史和书签。ctrl+左键是新标签前台打开而左键单击是在当前标签后页打开的,跟其他部分的处理恰好相反~~反正也很少用到侧边栏的不管它。
再问一下,最后一个最新关闭的标签页列表这部分功能,如果我不想要,请问该怎么删除啊?
再问一下,最后一个最新关闭的标签页列表这部分功能,如果我不想要,请问该怎么删除啊?
nettrottist 发表于 2009-4-18 19:18
脚本里有注释,找到最后一段大概5~6行左右,删除掉就可以了。
这个真不错,不仅比原来的open new tab强,比BHNewTab脚本功能也有增强。另外此脚本还集成了一个双击关闭标签页的功能,又可以省掉一个脚本了。

我这里有个有趣的现象:
对于用ctrl+H和ctrl+B调出的侧边栏形式的历史和书签。ctrl+左键是新标签前台打开而左键单击是在当前标签后页打开的,跟其他部分的处理恰好相反~~反正也很少用到侧边栏的不管它。
nettrottist 发表于 2009-4-18 19:11
BHNewTab那个功能是相当强大啊,代码我都没看完。话说golf-at大大的贴子里也包含了双击关闭标签页的功能。

侧边栏部分,你看到的现象是Firefox默认的阿,这个脚本没有涉及到侧边栏,我也很少用。
强烈支持一下,请楼主解决一下侧边栏书签新标签打开的问题,把此脚本扩充一下
fghxy 发表于 2009-4-18 19:08
侧边栏部分比较复杂一点,暂时不会加入进来。
本帖最后由 nettrottist 于 2009-4-18 19:55 编辑
话说golf-at大大的贴子里也包含了双击关闭标签页的功能。
这个我一直不知道。原来用老脚本的时候我还一直都另外装了一个双击标签页来关闭的脚本。呵呵~

BHNewTab也强大,但是脚本大了点估计执行的效率不如这个脚本。现在改用这个了,十分感谢劳动付出。
不错不错,感谢分享!!!
历史的最下方出现一条分隔线
BHNewTab和标签页扩展的几个好用的功能:
当前有空白标签页时是否使用空白标签打开
只允许新建一个空白标签页,其他的空白标签则自动关闭
本帖最后由 nettrottist 于 2009-4-19 09:32 编辑

只允许新建一个空白标签页,其他的空白标签则自动关闭  我装了一个AutoCloseBlankTab.uc.js也能达到相同效果。

而且本脚本也能一样判断并打开在空白标签页里。
=========
总的说来,选择这个脚本而不是bhnewtab是因为这个脚本比较简练,执行的效率会更高。
而且本脚本也能一样判断并打开在空白标签页里。
=========
总的说来,选择这个脚本而不是b ...
nettrottist 发表于 2009-4-19 09:29
空白标签页如果未激活,在空白标签页打开的功能则无法生效。
我这里,空白标签即便未激活,也是可以在空白标签页打开的!
我这里,空白标签即便未激活,也是可以在空白标签页打开的!
nettrottist 发表于 2009-4-19 10:03
这个不是本脚本的功能
BHNewTab和标签页扩展的几个好用的功能:
当前有空白标签页时是否使用空白标签打开
只允许新建一个空白标签页,其他的空白标签则自动关闭
qjahz 发表于 2009-4-19 09:15
只允许一个空白标签页的功能将加入。
历史的最下方出现一条分隔线
lindongbin 发表于 2009-4-18 20:07
那条分割线下方本来应该还有一条菜单,不知道被哪个扩展给移除了。
是吗?那楼主增加只允许开一个空白标签页功能的同时,也不要忘记加上一个“即便空白标签页未激活也能判断并在空白标签页内打开”的功能啊,集成一下。很好~期待!
“即便空白标签页未激活也能判断并在空白标签页内打开”,这个会有点问题欸,如果是在后台打开,可能看不清楚打开到哪个标签页去了。
本帖最后由 nettrottist 于 2009-4-19 12:47 编辑

那么我这里后台打开,也是判断有空白标签页的话就打开在空白页,即使没有激活的。
这估计是因为AutoCloseBlankTab.uc.js脚本非常强悍??
我还发现我这里是打开在激活标签页的右边~空白页消失。
是因为我装了一个打开标签在当前页的右边的脚本吗?
只允许一个空白标签页的功能将加入。
我行我速 发表于 2009-4-19 11:29
预计只处理新建标签页的操作,如果在地址栏手工输入about:blank地址或者点击主页按钮跳转到about:blank地址(主页预设为about:blank)等情形,则不禁止,大家有什么想法?
本帖最后由 qjahz 于 2009-4-19 15:48 编辑
“即便空白标签页未激活也能判断并在空白标签页内打开”,这个会有点问题欸,如果是在后台打开,可能看不清楚打开到哪个标签页去了。
我行我速 发表于 2009-4-19 12:23
建议和BHNewTab一样设置为前台打开标签页时,书签等在空白标签页打开并自动激活标签页。
试用了下,非常不错,基本可以取代BHNewTab。如果能让(收藏和历史)侧边栏也新标签页打开就完美了。
听老人说,今生做千件好事,来世方能讨生为猫。
预计只处理新建标签页的操作,如果在地址栏手工输入about:blank地址或者点击主页按钮跳转到about:blank地址(主页预设为about:blank)等情形,则不禁止,大家有什么想法? ...
我行我速 发表于 2009-4-19 14:40
把下面这段代码插入到原代码的主体函数中,大家试下效果,看看还需要怎样改进。
  1.   //新建标签页时利用已有的空白标签页
  2.   gBrowser.removeEventListener("NewTab", BrowserOpenTab, false);
  3.   hookCode("BrowserOpenTab", /(?=gBrowser.loadOneTab)/, function() {
  4.     var found = false;
  5.     for(var i=0; i<gBrowser.mTabs.length; i++) {
  6.       if (gBrowser.mTabs[i].linkedBrowser.currentURI.spec == "about:blank") {
  7.         gBrowser.selectedTab = gBrowser.mTabs[i];
  8.         found = true;
  9.         break;
  10.       }
  11.     }
  12.   });
  13.   hookCode("BrowserOpenTab", /(?=gBrowser.loadOneTab)/, "if (!found)");
  14.   gBrowser.addEventListener("NewTab", BrowserOpenTab, false);
复制代码
这个代码并不会禁止打开空白页,只是在新建标签页时自动利用第一个空白标签页,多余的空白标签页也不会自动关闭。如果在使用过程中关闭多余的空白标签页,会造成屏幕的闪动,我觉得可能不太好。
一直在用论坛里那个“當新增分頁時能自動利用尾端空白分頁”脚本,感觉还不错,楼主不妨参考下。
  1. (function() {
  2.    //公用函式
  3.    function hookCode(orgFunc, orgCode, myCode) {
  4.       eval(orgFunc + "=" + eval(orgFunc).toString().replace(orgCode, myCode));
  5.    }
  6.    //當新增分頁時能自動利用尾端空白分頁
  7.    hookCode("getBrowser().addTab", "return t;", (
  8.       function() {
  9.          if ((["removeTab","sss_restoreWindow"].indexOf(this.addTab.caller.name) == -1)
  10.             &&(!t.previousSibling.linkedBrowser.webProgress.isLoadingDocument)
  11.             &&(t.previousSibling.linkedBrowser.currentURI.spec == "about:blank"))
  12.          {
  13.             this.removeTab(t.previousSibling);
  14.          }
  15.       }
  16.    ).toString().replace(/^.*{/,"").replace(/.*}$/,"")+"$&");
  17. })();
复制代码
听老人说,今生做千件好事,来世方能讨生为猫。