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

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

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

[交流] 让书签、历史、url、搜索在新的标签页打开(2017/11/05更新)

本帖最后由 golf-at 于 2017-11-5 10:51 编辑

这是 userChrome.js 脚本,适用于 firefox 3.0 以上的版本,让“书签”、“历史”、“地址”、“搜索”在新的标签页打开。有了这个脚本,我放弃使用 Tab Mix Lite CE 或者 Tab Mix Plus 了。下面的代码加到 userChrome.js 中,或者保存为 .uc.js 为后缀的文件放在配置文件夹的 chrome 目录下,同时使用附件提供的 userChrome.js。没有安装 userChrome.js 扩展的可以从附件下载安装。

2017/11/05
☆支持最新的 Firefox 57。不过这个脚本,有时用着用着就不能打开书签了,之前必须重启 Firefox 才可以,现在增加拦截异常,出错时还在当前标签页打开。

2015/03/05
☆修正了浏览器有时不能打开书签链接的bug。
☆支持“显示您的历史记录”按钮弹出菜单里面的历史记录。

2014/12/21
☆ 支持书签在侧边栏打开。
☆ 隐私浏览窗口的空白标签页,以前版本不认为是空白的,现在认为是空白的了。

2014/12/11
☆ javascript: 开头的网址,在当前标签页打开了。

2014/12/06
☆ 支持最新版 Firefox
☆ 支持 “侧边栏”和“我的足迹”中的书签和历史 在新标签页打开。                                

2012/02/04
☆ 支持最新的 firefox 13.0a1 每夜版。

2010/12/29
☆ 更新了一下,新版本支持“我的足迹”了。

2010/08/15
☆ 由于firefox b4pre 的函数 replace() 自身的bug,导致脚本失效。如果 replace() 第一个参数为字符串且含括号,同时第二个参数含 $& 时,replace() 就不做替换,第一个参数使用正则表达式就没问题。现在调用 replace() 时第一个参数使用正则表达式了。

2009/04/27
☆ 修正了“书签管理器”(我的足迹)中点击书签时无法打开书签的问题。
附件: 您所在的用户组无法下载或查看附件
1

评分次数

  • kuhi

再提供一个脚本:在标签上双击关闭,空白处双击开新标签;在标签上点中键关闭标签,在空白处点中键恢复关闭的页面。
  1. function TabClick(e, DblClick) {
  2.     if (e.ctrlKey || e.shiftKey || e.altKey)
  3.         return;
  4.     if (DblClick==1 && e.button!=0) return;
  5.     if (DblClick==0 && e.button!=1) return;

  6.     var aTab = e.originalTarget;
  7.     if (aTab.localName=="toolbarbutton")
  8.         return;
  9.     while(aTab.localName != "tabs") {
  10.         if (aTab.localName == "tab")
  11.             break;
  12.         else
  13.             aTab = aTab.parentNode;
  14.     }
  15.     if (aTab.localName != "tab") {
  16.         if (DblClick == 1)
  17.             BrowserOpenTab();
  18.         else
  19.             undoCloseTab();
  20.     }
  21.     else if(gBrowser.mTabContainer.childNodes.
  22.         length == 1)
  23.         openUILinkIn("about:blank", "current");
  24.     else
  25.         gBrowser.removeTab(aTab);
  26. }
  27. function TabBarClick(e) {
  28.     if (e) TabClick(e, 0);
  29. }
  30. function TabBarDblClick(e) {
  31.     if (e) TabClick(e, 1);
  32. }
  33. getBrowser().onTabClick = TabBarClick;
  34. getBrowser().onTabBarDblClick = TabBarDblClick;
复制代码
[ 本帖最后由 golf-at 于 2008-11-14 22:21 编辑 ]
收藏了~谢谢楼主分享
原帖由 nettrottist 于 2008-11-13 18:48 发表
啊,我要试试。看看能不能就此跟tab类扩展说再见了!

晕,怎么在我这里两个脚本都没有起作用呢?
并且默认的标签页外观也不理想,太宽了,有办法不借助扩展来变短些吗? ...
使用 http://mozilla.sociz.com/viewthread.php?tid=20276 这个帖子里面提供的扩展以及 userChrome.js。我已经在1楼提供扩展和 userChrome.js(读取.uc.js为后缀的脚本文件)。

[ 本帖最后由 golf-at 于 2008-11-13 19:21 编辑 ]
我当然是用了这个扩展,还加挂了好多的脚本。我把上面两段作成单独的us.js和在chrome文件夹下,以免出问题时不好排除原因。但是加上之后没有任何效果。

PS:好奇怪,当我把脚本放在userchrome.js文件里面时(而不是单独做一个uc.js)重启,第二个脚本达到了效果。第一个还是无效啊。

[ 本帖最后由 nettrottist 于 2008-11-14 10:41 编辑 ]
第一个脚本无效 ,第二个可以使用
搜索栏的结果在新标签页打开
about:config
browser.search.openintab   把值设为true,即可
解决上面这个办法搜索时点“放大镜”仍然在当前tab打开的毛病,有下面的代码
  1. /*open search in new tab */
  2. (function() {   
  3.     try {
  4.         var cName = "@mozilla.org/preferences-service;1";
  5.         var fPref = Components.classes[cName].getService(Components
  6.             .interfaces.nsIPrefService);
  7.         if (fPref.getBoolPref("browser.search.openintab") != true)
  8.             fPref.setBoolPref("browser.search.openintab", true);
  9.         eval("whereToOpenLink = " + whereToOpenLink.toString().replace(
  10.             'if (!e) {', 'if (e&&e.currentTarget.getAttribute("anonid")\
  11.             =="search-go-button") return "tab"; [        DISCUZ_CODE_0        ]'));
  12.     }catch(e){}

  13. })();

  14. function _LoadURL(aTriggeringEvent, aPostData)
  15. {
  16.     var where = (gBrowser.currentURI.spec!='about:blank' ||
  17.         gBrowser.webProgress.isLoadingDocument) ? 'tab' :
  18.         'current';
  19.     if (gURLBar.value!='') openUILinkIn(gURLBar.value, where);
  20.     return true;
  21. }
复制代码
URL在新标签页打开(userchrome.js脚本)
  1. eval("BrowserLoadURL = " + BrowserLoadURL.toString().replace("e;", "[        DISCUZ_CODE_0        ] if ((gBrowser.currentURI.spec != 'about:blank' || gBrowser.webProgress.isLoadingDocument)) { var tab = gBrowser.addTab(); gBrowser.selectedTab = tab; }"));
复制代码
书签和历史,暂时未找到。也没关系,就用中键来点击吧,反正现在有了awesome bar。已经很少去用书签和历史了。

http://mozilla.sociz.com/viewthr ... mp;page=2#pid114458
再加上这个:保护标签页。也是userchrome.js脚本。

隐藏标签页上的关闭按钮:
  1. .tabs-closebutton-box, .tab-close-button {display: none !important;}
复制代码
隐藏标签栏上的标签页列表下拉箭头:
  1. @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
  2. .tabbrowser-arrowscrollbox + stack {display: none !important;}
复制代码
about:config
browser.tabs.tabMaxWidth  设为150(改变标签页宽度)
browser.tabs.tabMinWidth   设为50(改变标签页最小宽度)

使标签栏能多行显示的userchrome.css
http://userstyles.org/styles/10930
http://userstyles.org/styles/10989


经过这几步的拾掇,已经跟我使用tab mix plus时的标签栏的外观,效果差不多完全相等了!

[ 本帖最后由 nettrottist 于 2008-11-17 08:19 编辑 ]
楼上的 有个autoClick的gm脚本
我还是用我自己的userchrome.js.xpi和userchrome.js
搂住提供的不对我胃口哈
链接被屏蔽
userchrome.js扩展不就0。8吗、难道真还有不同的版本不成。
原帖由 nettrottist 于 2008-11-13 21:01 发表
userchrome.js扩展不就0。8吗、难道真还有不同的版本不成。
当初的 0.8 版,在 firefox 3.0 时就不行了,后来有人改了一下,就变成了 0.8mod 版了。
书签和历史可以用鼠标中建可以实现啊
设定标签最大和最小宽度的代码:
  1. var maxWidth = 200, minWidth = 120;
  2. gBrowser.mTabContainer.mTabMaxWidth = maxWidth;
  3. gBrowser.mTabContainer.mTabMinWidth = minWidth;
  4. for(i=0; i<getBrowser().mTabContainer.childNodes
  5.     .length; i++) {
  6.     var tab = gBrowser.mTabContainer.childNodes[
  7.         i];
  8.     tab.setAttribute("maxwidth", maxWidth);
  9.     tab.setAttribute("minwidth", minWidth);
  10. }
复制代码
[ 本帖最后由 golf-at 于 2008-11-13 23:43 编辑 ]
原帖由 nettrottist 于 2008-11-13 19:22 发表
我当然是用了这个扩展,还加挂了好多的脚本。我把上面两段作成单独的us.js和在chrome文件夹下,以免出问题时不好排除原因。但是加上之后没有任何效果。

PS:好奇怪,当我把脚本放在userchrome.js文件里面时(而不是单独做一 ...
我的机器上,两个脚本都是放在单独的 .uc.js 文件中,没有问题。难道是和其它的脚本有冲突?你将其它脚本先删除试试看。
不删,我其他的脚本都是必须的。
原帖由 nettrottist 于 2008-11-13 22:17 发表
不删,我其他的脚本都是必须的。
我不是叫你就不用其它的脚本了,是临时删除(移到其它目录即可),看看是不是和其它的脚本冲突。就也如同一些扩展会冲突一样,各个独立的脚本,也有可能会发生冲突。
原帖由 zls 于 2008-11-13 19:45 发表
第一个脚本无效 ,第二个可以使用
刚才一直没有注意,发帖时没有“禁用URL识别”,结果代码中的两个字符被转换成[        DISCUZ_CODE_0        ],造成脚本加载失败,现在OK了。
原帖由 golf-at 于 2008-11-13 22:07 发表
设定标签最大和最小宽度的代码:var maxWidth = 200, minWidth = 120;
gBrowser.mTabContainer.mTabMaxWidth = maxWidth;
gBrowser.mTabContainer.mTabMinWidth = minWidth;
for(i=0; i
about:config
browser.tabs.tabMaxWidth  设为150(改变标签页宽度)
browser.tabs.tabMinWidth   设为50(改变标签页最小宽度)

何必那么麻烦?
原帖由 nettrottist 于 2008-11-13 19:59 发表
再问一下楼主,能不能编出光标移动到标签上,这个标签获得焦点调到前台。(省去一次点击)
  1. /* auto focus tab */
  2. gBrowser.mTabBox.addEventListener('mouseover',
  3.     function(e){ gBrowser.selectedTab=e.target },
  4.     false);
复制代码
原帖由 golf-at 于 2008-11-14 00:11 发表
/* auto focus tab */
gBrowser.mTabBox.addEventListener('mouseover',
    function(e){ gBrowser.selectedTab=e.target },
    false);
有效,感谢中……能不能把这个获得焦点的时间也设上,比如鼠标放在标签上超过200毫秒以上选择,否则不选。
效果已经很好,又节省了一个tab focus的扩展。

[ 本帖最后由 nettrottist 于 2008-11-14 09:02 编辑 ]
原帖由 nettrottist 于 2008-11-14 08:29 发表

有效,感谢中……能不能把这个获得焦点的时间也设上,比如鼠标放在标签上超过200毫秒以上选择,否则不选。
  1. /* auto focus tab */
  2. var ft_tid=null; var ft_event=null;
  3. function TabMouseOver(e) {
  4.     ft_event = e.target;
  5.     ft_tid = setTimeout("if (ft_event) { \
  6.         gBrowser.selectedTab = ft_event; \
  7.         ft_event = null; }", 200);
  8. }
  9. function TabMouseOut(e) {
  10.     ft_event = null; clearTimeout(ft_tid);
  11. }
  12. getBrowser().mTabBox.addEventListener('mouseout',
  13.     TabMouseOut, false);
  14. getBrowser().mTabBox.addEventListener('mouseover',
  15.     TabMouseOver, false);
复制代码
[ 本帖最后由 golf-at 于 2008-11-14 09:53 编辑 ]
原帖由 nettrottist 于 2008-11-13 19:59 发表
再问一下楼主,能不能编出光标移动到标签上,这个标签获得焦点调到前台。(省去一次点击)
一直不知道这个是干什么用的
nettrottist  解释一下
nettrottist
还差个中键恢复刚关闭标签的脚本呢?
原帖由 zls 于 2008-11-14 11:23 发表
原帖由 nettrottist 于 2008-11-13 19:59 发表
再问一下楼主,能不能编出光标移动到标签上,这个标签获得焦点调到前台。(省去一次点击)
一直不知道这个是干什么用的
nettrottist  解释一下 ...
你现在切换标签页是要点击标签的吧,用了这个脚本后只要把鼠标光标指向到标签上就自动切换到该标签上了,无需点击。
这样跟你介绍的autoclick好像没有什么区别啊
autoclick只针对页面上的链接,不会对标签起效的。知道了么?
原帖由 nettrottist 于 2008-11-14 11:45 发表
autoclick只针对页面上的链接,不会对标签起效的。知道了么?
那 是我自己记错了 之前我用过另一个脚本 和这个混淆了
话说这个脚本用得不习惯啊 很容易误操作啊
差个中键恢复刚关闭标签的脚本
我就可以卸载tab mix 了
nettrottist 、golf-at 帮下我啊
  1. this.mItem = document.createElement("menuitem");
  2.     this.mItemSep = document.createElement("menuseparator");
  3.     this.mItem.setAttribute("label", "Undo Close Tab");
  4.     this.mItem.setAttribute("oncommand", "undoCloseTab();");

  5.     document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { undoCloseTabAdd.onPopupShowing(this); }, false);
  6.   },

  7.   onPopupShowing: function(aPopup)
复制代码
这个可以在右键菜单增加一个“恢复关闭标签”的项。
习惯用中键了  
nettrottist帮我写个