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

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

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

[求助] tab mix plus 的这功能可否用脚本代替?

本帖最后由 ubcw8583 于 2009-4-14 12:36 编辑

tab mix plus 的这功能可否用脚本代替?如可以我就可不用tab mix plus 了
这功能的作用是当标签栏标签过多时,标签栏会自动留下两侧额外空间,标签不会把整个标签栏盖满
附件: 您所在的用户组无法下载或查看附件
楼主不用tmp其他的功能?? 从功能上说,tmp好像无从替代把
现在不用TMP了。以前用TMP时,也没有关心这个功能。不知道这个功能具体是干什么的。
现在不用TMP了。以前用TMP时,也没有关心这个功能。不知道这个功能具体是干什么的。
golf-at 发表于 2009-4-14 12:25
这功能的作用是当标签栏标签过多时,标签栏会自动留下两侧额外空间,标签不会把整个标签栏盖满
.tabbrowser-strip   {margin: 0 10px 0 10px  !important;}
是这种效果吗?
.tabbrowser-strip   {margin: 0 10px 0 10px  !important;}
是这种效果吗?
fghxy 发表于 2009-4-14 13:00
有点似,tmp是标签向内收,标签栏是不动的,所以我可以双click空白地方打开新标签,但你这个是整个标签栏向内收,双click空白地方也打不开新标签..........
只是为了新建标签吗……我已经习惯直接Ctrl+T了……
挚爱紫薇
/* 标签栏两端留白 */
.tabbrowser-strip tab:first-child { margin-left: 20px !important;}
.tabbrowser-strip tab:last-child { margin-right: 20px !important;}
本帖最后由 ubcw8583 于 2009-4-14 18:59 编辑

成功,我可不用tab mix plus 了 , 谢谢 , 但如可以改一下更好 , 如效果可以从图1变成图2就完美了
附件: 您所在的用户组无法下载或查看附件
我也是觉得这个两侧留空的功能方便才选择TMP的。
其实这样更好,左边有,右边可以不要的
  1. .tabbrowser-strip tab:first-child { margin-left: 20px !important;}
复制代码
这样就可以了
其实这样更好,左边有,右边可以不要的
.tabbrowser-strip tab:first-child { margin-left: 20px !important;}
这样就可以了
hoolooday 发表于 2009-4-15 20:52
我是想左右两边都是图2的效果啊................
其实这样更好,左边有,右边可以不要的
.tabbrowser-strip tab:first-child { margin-left: 20px !important;}
这样就可以了
hoolooday 发表于 2009-4-15 20:52
如何改成“右边有,左边不要”?我把first-child改成last-child后不奏效。
听老人说,今生做千件好事,来世方能讨生为猫。
本帖最后由 cotangent 于 2009-4-16 17:49 编辑

楼主,给你个我自己用的uc.js脚本。大致就是将Tab Mix Plus相关功能的脚本贴在了一起。
  1. /* ::::::::::::::::::::::: Tab Mix Plus :::::::::::::::::::::::
  2. 1. BHNewTab v1.1
  3. 2. Close tab on double-clicks
  4. 3. Open a new tab at the next of the current tab
  5. 4. Automatically close blank tab
  6. :::::::::::::::::::::::::: Tab Mix Plus :::::::::::::::::::: */

  7. ///////////////////
  8. // BHNewTab v1.1 //
  9. ///////////////////
  10. var BHNewTab = function(){
  11. BHNewTab.METADATA = <><![CDATA[
  12. // ==UserScript==
  13. // @name           Bookmarks and History open in New Tab
  14. // @include        main
  15. // @include        chrome://browser/content/browser.xul
  16. // @include        chrome://browser/content/bookmarks/bookmarksPanel.xul
  17. // @include        chrome://browser/content/history/history-panel.xul
  18. // @include        chrome://browser/content/places/places.xul
  19. // @include        chrome://libraryinsidebar/content/sidebarPlacesOverlay.xul
  20. // @description    BookmarkとHistoryをClickした時に新しいTabで開くようにしたり,開き方を変更したり.
  21. // @compatibility  Firefox 3.0 3.1 3.2
  22. // @version        1.1 mod20 2009/02/28 22:40 revertしてないのを修正

  23. ]]></>;
  24.     // --- config ---
  25.     BHNewTab.NWFLAG_XUL           = true;      // XUL 文件(*.xul)是否在新窗口打开 是:true 否:false
  26.     BHNewTab.USE_ENTERKEY         = true;      // Enter回车后是否在新标签页中打开 是:true 否:false
  27.     BHNewTab.USE_BLANK            = true;     // 当前有空白标签页时是否在空白标签页中打开 是:true 否:false
  28.     BHNewTab.FAKE_REFERRER        = true;      // 地址栏输入时伪装REFERRER
  29.     BHNewTab.WINDOW_BACKGROUND    = true;      // Libraryからurlを開いたとき, windowを前面にしない
  30.    
  31.    /*
  32.     修改'',可设置标签页的打开方式。
  33.         'tab':表示前台打开
  34.         'tabshifted':表示后台打开
  35.         'current' :在当前标签页打开
  36.         'window':新建窗口打开
  37.         'save':保存
  38.         */
  39.     BHNewTab.TARGET_BOOKMARKS      = 'tab';                  // 书签的打开位置 (tab / tabshifted / current / window / save)
  40.     BHNewTab.TARGET_HISTORY        = 'tab';                  // 历史的打开位置
  41.     BHNewTab.TARGET_OPENFOLDER     = 'tab';             //「打开全部标签页」时打开位置 (空白/null で機能の置き換えをしない)
  42.     BHNewTab.TARGET_LOCATIONBAR    = 'current';   // 打开地址栏链接的位置 (空白/null で機能の置き換えをしない)
  43.     BHNewTab.TARGET_HOMEBUTTON     = 'tab';       // 打开主页后的位置 (空白/null で機能の置き換えをしない)
  44.     BHNewTab.TARGET_Object      = 'tab';       // 打开侧边栏时的位置 (空白/null で機能の置き換えをしない)
  45.     BHNewTab.KEYWORDS_IN_Object = true;        // 搜索栏是否启用关键字搜索功能
  46.     BHNewTab.TARGET_MIDCLICK       = 'tab';       // 中键点击时的开启位置
  47.     BHNewTab.TARGET_ALT            = 'save';      // 按住 ALT,鼠标点击链接时的打开方式
  48.     BHNewTab.TARGET_SHIFT          = 'window';    // 按住 SHIFT,鼠标点击链接时的打开方式
  49.     BHNewTab.TARGET_CTRL           = 'tab';       // 按住 CTRL,鼠标点击链接时的打开方式
  50.     BHNewTab.TARGET_ALTSHIFT       = 'tab';       // 按住 ALT + SHIFT,鼠标点击链接时的打开方式
  51.     BHNewTab.TARGET_ALTCTRL        = 'tab';       // 按住 ALT + CTRL,鼠标点击链接时的打开方式
  52.     BHNewTab.TARGET_SHIFTCTRL      = 'tab';       // 按住 SHIFT + CTRL,鼠标点击链接时的打开方式
  53.     BHNewTab.TARGET_ASC            = 'tab';       // 按住 ALT + SHIFT + CTRL,鼠标点击链接时的打开方式
  54.     BHNewTab.TARGET_MID_ALT        = 'save';      // 按住 ALT ,鼠标点击链接时的打开方式 (中键点击时)
  55.     BHNewTab.TARGET_MID_SHIFT      = 'window';    // 按住 SHIFT ,鼠标点击链接时的打开方式 (中键点击时)
  56.     BHNewTab.TARGET_MID_CTRL       = 'tab';       // 按住 CTRL,鼠标点击链接时的打开方式 (中键点击时)
  57.     BHNewTab.TARGET_MID_ALTSHIFT   = 'current';   // 按住 ALT + SHIFT ,鼠标点击链接时的打开方式 (中键点击时)
  58.     BHNewTab.TARGET_MID_ALTCTRL    = 'current';   // 按住 ALT + CTRL ,鼠标点击链接时的打开方式 (中键点击时)
  59.     BHNewTab.TARGET_MID_SHIFTCTRL  = 'current';   // 按住 SHIFT + CTRL ,鼠标点击链接时的打开方式 (中键点击时)
  60.     BHNewTab.TARGET_MID_ASC        = 'current';   // 按住 ALT + SHIFT + CTRL,鼠标点击链接时的打开方式 (中键点击时)
  61.     var TRY_INTERVAL          = 30;                             // 機能置き換えを実行するtiming (毫秒)
  62.     var TRY_LIMIT             = 50;                             // 機能置き換えを試みる限界数
  63.     // --- config ---

  64.     var Cc  = Components.classes;
  65.     var Ci  = Components.interfaces;
  66.     var Cr  = Components.results;
  67.     BHNewTab.FX3 = (Cc['@mozilla.org/xre/app-info;1'].getService(Ci.nsIXULAppInfo).version.substr(0,1) == 3);
  68.     if (!BHNewTab.FX3)
  69.       return;
  70.     if('TM_init' in window)
  71.       return;
  72.     if('TreeStyleTabService' in window)
  73.       return;

  74.     BHNewTab.TARGET_DEFAULT = {bookmarks:BHNewTab.TARGET_BOOKMARKS,history:BHNewTab.TARGET_HISTORY,openfolder:BHNewTab.TARGET_OPENFOLDER,locationbar:BHNewTab.TARGET_LOCATIONBAR,homebutton:BHNewTab.TARGET_HOMEBUTTON,Object: BHNewTab.TARGET_Object};

  75.     BHNewTab.fakeReferrer = false;

  76.     // Referrerを得る
  77.     function getReferrer(url){ try{ return (BHNewTab.fakeReferrer) ? Cc['@mozilla.org/network/io-service;1'].getService(Ci.nsIIOService).newURI(url.replace(/[^/]+$/,''),null,null) : null; }catch(e){ return null; } }

  78.     // URL のListをCurrent Tab + 新しいTabで開く.
  79.     function openCurrent(url, post, allowThirdPartyFixup){
  80.         var win = getTopWin();
  81.         if ("isLockTab" in win.gBrowser &&
  82.             win.gBrowser.isLockTab(win.gBrowser.selectedTab) && !/^\s*javascript:/.test(url[0])){
  83.             win.gBrowser.loadOneTab(url[0], getReferrer(url[0]),null,post[0] || null,false, allowThirdPartyFixup || false);
  84.         } else {
  85.           win.loadURI(url[0], getReferrer(url[0]),post[0] || null, allowThirdPartyFixup || false);
  86.         }
  87.         for(let i = 1,max = url.length;i < max;++i){
  88.           win.gBrowser.loadOneTab(url, getReferrer(url),null,post || null,false, allowThirdPartyFixup || false);
  89.         }
  90.     }

  91.     // URL のListを新しいTabで開く.
  92.     function openTab(url, post, bg, allowThirdPartyFixup){
  93.         var win = getTopWin();
  94.         if (BHNewTab.USE_BLANK && win.content.window.document.URL == 'about:blank' &&
  95.            !("isLockTab" in win.gBrowser &&
  96.             win.gBrowser.isLockTab(win.gBrowser.selectedTab) && !/^\s*javascript:/.test(url[0])) ){
  97.           openCurrent([url[0]],[post[0]], allowThirdPartyFixup);
  98.         } else {
  99.           win.gBrowser.loadOneTab(url[0], getReferrer(url[0]),null,post[0] || null, bg, allowThirdPartyFixup || false);
  100.         }
  101.         for(let i = 1, max = url.length;i < max;++i) {
  102.           win.gBrowser.loadOneTab(url, getReferrer(url),null,post || null, true, allowThirdPartyFixup || false);
  103.         }
  104.     }

  105.     // URL のListを新しいWindowで開く.
  106.     function openWindow(url, post, allowThirdPartyFixup){
  107.         var win = getTopWin();
  108.         win.open();
  109.         win = getTopWin();
  110.         win.loadURI(url, getReferrer(url[0]), post[0] || null, allowThirdPartyFixup || false);
  111.         for (let i = 1,max = url.length;i < max;++i){
  112.           win.gBrowser.loadOneTab(url, getReferrer(url),null,post || null,false, allowThirdPartyFixup || false);
  113.         }
  114.     }

  115.     // URL のListの指すFileを保存.
  116.     function saveURL(url){ for(let i = 0,max = url.length;i < max;++i) getTopWin().saveURL(url,null,null,true,null, getReferrer(url)); }

  117.     // event ObjectからContentsを開く場所を得る.
  118.     BHNewTab.getTarget = function getTarget(event,type){
  119.         if(event && event.button == 1){
  120.             switch(event.altKey | event.shiftKey << 1 | event.ctrlKey << 2){
  121.               case 0 : return BHNewTab.TARGET_MIDCLICK;
  122.               case 1 : return BHNewTab.TARGET_MID_ALT;
  123.               case 2 : return BHNewTab.TARGET_MID_SHIFT;
  124.               case 3 : return BHNewTab.TARGET_MID_ALTSHIFT;
  125.               case 4 : return BHNewTab.TARGET_MID_CTRL;
  126.               case 5 : return BHNewTab.TARGET_MID_ALTCTRL;
  127.               case 6 : return BHNewTab.TARGET_MID_SHIFTCTRL;
  128.               case 7 : return BHNewTab.TARGET_MID_ASC;
  129.               default: return BHNewTab.TARGET_MIDCLICK;
  130.             }
  131.         }
  132.         else{
  133.             let def = BHNewTab.TARGET_DEFAULT[type] || 'current';
  134.             if(!event) return def;
  135.             switch(event.altKey | event.shiftKey << 1 | event.ctrlKey << 2){
  136.               case 0 : return def;
  137.               case 1 : return BHNewTab.TARGET_ALT;
  138.               case 2 : return BHNewTab.TARGET_SHIFT;
  139.               case 3 : return BHNewTab.TARGET_ALTSHIFT;
  140.               case 4 : return BHNewTab.TARGET_CTRL;
  141.               case 5 : return BHNewTab.TARGET_ALTCTRL;
  142.               case 6 : return BHNewTab.TARGET_SHIFTCTRL;
  143.               case 7 : return BHNewTab.TARGET_ASC;
  144.               default: return def;
  145.             }
  146.         }
  147.     }

  148.     // 適切な場所にContentsを開く.
  149.     BHNewTab.openInTarget = function openInTarget(url, event, type, post){
  150.           if (/^(javascrtpt:|data:)/.test(url)){
  151.             openUILinkIn(url.split('|')[0], 'current');
  152.             return;
  153.           }
  154.           var allowThirdPartyFixup = 'locationbar' == type;
  155.           if ('locationbar' == type && BHNewTab.getTarget(event,type) != 'current') {
  156.             if ("BrowserLoadURL" in window) {
  157.               handleURLBarRevert();
  158.             } else {
  159.               gURLBar.handleRevert();
  160.             }
  161.             content.focus();
  162.           }
  163.           switch(BHNewTab.getTarget(event,type)){
  164.           case 'current'    : openCurrent(url.split('|'), post || [],        allowThirdPartyFixup); break;
  165.           case 'tabshifted' : openTab(url.split('|'),     post || [], true,  allowThirdPartyFixup); break;
  166.           case 'tab'        : openTab(url.split('|'),     post || [], false, allowThirdPartyFixup); break;
  167.           case 'window'     : openWindow(url.split('|'),  post || [],        allowThirdPartyFixup); break;
  168.           case 'save'       : saveURL(url.split('|')); break;
  169.         }
  170.     }

  171.     // XUL Fileか否か.
  172.     BHNewTab.isXUL = function isXUL(url){ return (!/^javascript:/.test(url) && /[.]xul$/.test(url)); }

  173.     // Eventを止める.
  174.     BHNewTab.stopEvent = function stopEvent(event){ event.preventDefault(); event.stopPropagation(); }

  175.     // いつでもClickされたMouseのButtonを知る事ができるように,MouseEventを監視して,Button情報を更新する.
  176.     {
  177.         let mouseButton = null;
  178.         window.addEventListener('mousedown',function(event){ mouseButton = event.button; },false);
  179.         window.addEventListener('mouseup',function(event){ mouseButton = event.button; setTimeout(function(){ mouseButton = null; },0); },false);
  180.         BHNewTab.getMouseButton = function getMouseButton(){ return mouseButton; }
  181.     }

  182.     // SidebarのBookmarkとHistoryのClickとEnterKeyのCallback.
  183.     BHNewTab.callbackBH = function callbackBH(event){

  184.         if(event.type == 'click' && event.button == 2) return;
  185.         if(event.type == 'keypress' && event.keyCode != KeyEvent.DOM_VK_RETURN) return;

  186.         var tree = (event.type == 'keypress') ? event.originalTarget : event.originalTarget.parentNode; if(tree.localName != 'tree') return;
  187.         //Library
  188.         if (window.location.href == 'chrome://browser/content/places/places.xul' ||
  189.             window.location.href == 'chrome://libraryinsidebar/content/sidebarPlacesOverlay.xul'){
  190.           //if not right pane, do nothing.
  191.           if (tree != document.getElementById('placeContent'))
  192.             return;
  193.           if (event.type == 'dblclick' || event.type == 'click' && event.button == 1) {
  194.             var row = {}, col = {}, obj = {};
  195.             tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, obj);
  196.             if (row.value == -1) return;
  197.             if(tree.treeBoxObject.view.isContainer(row.value)) return;
  198.             tree.treeBoxObject.view.selection.select(row.value);
  199.           } else if (!(event.type == 'keypress' && event.keyCode == KeyEvent.DOM_VK_RETURN)){
  200.             return;
  201.           }
  202.         } else  if (event.type == 'click') {
  203.           var row = {}, col = {}, obj = {};
  204.           tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, obj);
  205.           if (row.value == -1) return;
  206.           if(tree.treeBoxObject.view.isContainer(row.value)) return;
  207.           tree.treeBoxObject.view.selection.select(row.value);
  208.         }

  209.         var node = tree.controller._view.selectedNode; if(!node) return;
  210.         var def  = (event.button != 1 && !event.shiftKey && !event.ctrlKey && !event.altKey);
  211.         var url  = node.uri;

  212.         if(tree.ownerDocument.defaultView.location ==
  213.                  'chrome://browser/content/bookmarks/bookmarksPanel.xul'||
  214.            tree.ownerDocument.defaultView.location ==
  215.                  'chrome://browser/content/places/places.xul' ||
  216.            tree.ownerDocument.defaultView.location ==
  217.                  'chrome://libraryinsidebar/content/sidebarPlacesOverlay.xul'){
  218.             if(def
  219.                && PlacesUtils.annotations.
  220.                   itemHasAnnotation(node.itemId,LOAD_IN_SIDEBAR_ANNO)){
  221.               return;
  222.             }
  223.             var uri = PlacesUtils._uri(url);
  224.             if (uri.schemeIs("javascript") || uri.schemeIs("data")){
  225.               openUILinkIn(url, 'current');
  226.             } else if(def && BHNewTab.NWFLAG_XUL && BHNewTab.isXUL(url)){
  227.               getTopWin().open(url,'_blank',
  228.               'chrome,extrachrome,menubar,resizable,scrollbars,status,toolbar,centerscreen');
  229.             } else {
  230.               if (PlacesUtils.annotations
  231.                            .itemHasAnnotation(node.itemId, LOAD_IN_SIDEBAR_ANNO)) {
  232.                 var w = getTopWin();
  233.                 if (w) {
  234.                   w.openWebPanel(node.title, node.uri);
  235.                   return;
  236.                 }
  237.               }
  238.               BHNewTab.openInTarget(url,event,'bookmarks');
  239.               if (getTopWin() != window && !BHNewTab.WINDOW_BACKGROUND){
  240.                 getTopWin().content.focus();
  241.               }
  242.             }
  243.         }
  244.         else {
  245.           BHNewTab.openInTarget(url,event,'history');
  246.         }
  247.         BHNewTab.stopEvent(event);
  248.     }

  249.     // Bookmark Toolbar and Menu, History MenuのClickとEnterKeyのCallback.
  250.     BHNewTab.callbackBHMenu = function callbackBHMenu(event){
  251.         /*event.button = */var button = BHNewTab.getMouseButton();
  252.         if(!BHNewTab.USE_ENTERKEY && button == null) return;
  253.         var entry = event.originalTarget;

  254.         if (entry.node && PlacesUtils.nodeIsContainer(entry.node)){
  255.           PlacesUIUtils.openContainerNodeInTabs(entry.node, event);
  256.           BHNewTab.stopEvent(event);
  257.           return;
  258.         }
  259.         var url   = entry.getAttribute('statustext') || ((entry.node) ? entry.node.uri : null); if(!url) return;

  260.         var def   = (event.button != 1 && !event.shiftKey && !event.ctrlKey && !event.altKey);

  261.         if(event.currentTarget.id != 'history-menu'){
  262.             let node = entry.node;
  263.             if(def && PlacesUtils.annotations.itemHasAnnotation(node.itemId,LOAD_IN_SIDEBAR_ANNO)) return;
  264.             var uri = PlacesUtils._uri(url);
  265.             if (uri.schemeIs("javascript") || uri.schemeIs("data")) openUILinkIn(url, 'current');
  266.             else if(def && BHNewTab.NWFLAG_XUL && BHNewTab.isXUL(url)) window.open(url,'_blank','chrome,extrachrome,menubar,resizable,scrollbars,status,toolbar,centerscreen');
  267.             else if (PlacesUtils.annotations
  268.                            .itemHasAnnotation(entry.node.itemId, LOAD_IN_SIDEBAR_ANNO)) {
  269.               var w = getTopWin();
  270.               if (w) {
  271.                 w.openWebPanel(entry.node.title, entry.node.uri);
  272.                 return;
  273.               }
  274.             }
  275.             else BHNewTab.openInTarget(url,event,'bookmarks');
  276.         }
  277.         else BHNewTab.openInTarget(url,event,'history');
  278.         BHNewTab.stopEvent(event);
  279.     }

  280.     // 「Tabですべて開く」置き換え.
  281.     BHNewTab.replaceOpenFolder = function replaceOpenFolder(doc){
  282.         var win = doc.defaultView;
  283.         var el  = doc.getElementById('placesContext_openContainer:tabs');
  284.         el.setAttribute('oncommand','this.run(event);');
  285.         el.run = function(event){
  286.             var _view = PlacesUIUtils.getViewForNode(doc.popupNode).controller._view;
  287.             var node  = _view.selectedNode;
  288.             if(_view.hasSingleSelection && PlacesUtils.nodeIsContainer(node)) PlacesUIUtils.openContainerNodeInTabs(_view.selectedNode,event);
  289.             else{
  290.                 let urllist = [];
  291.                 let contents = PlacesUtils.getFolderContents(node.itemId, false, false).root;
  292.                 for (let i = 0; i < contents.childCount; ++i) {
  293.                   let child = contents.getChild(i);
  294.                   if (PlacesUtils.nodeIsURI(child))
  295.                     urllist.push(child);
  296.                 }
  297.                 PlacesUIUtils.openURINodesInTabs(urllist,event);
  298.             }
  299.         };

  300.         win.PlacesUIUtils.openURINodesInTabs = function(urllist,event){
  301.             if(!this._confirmOpenInTabs(urllist.length)) return;
  302.             var urls = [];
  303.             for(let i = 0; i < urllist.length; i++){
  304.               urls.push(urllist.uri);
  305.             }
  306.             BHNewTab.openInTarget(urls.join('|'),event,'openfolder');
  307.         }
  308.         win.PlacesUIUtils.openContainerNodeInTabs = function(node,event){
  309.             var urllist = PlacesUtils.getURLsForContainerNode(node);
  310.             this.openURINodesInTabs(urllist,event);
  311.         }
  312.     }

  313.     BHNewTab.main = {
  314.           callbackBookmarks : BHNewTab.callbackBH,
  315.           callbackHistory   : BHNewTab.callbackBH,
  316.           callbackBHMenu    : BHNewTab.callbackBHMenu,
  317.           replaceOpenFolder : BHNewTab.replaceOpenFolder,
  318.           bookmarksURL      : 'chrome://browser/content/bookmarks/bookmarksPanel.xul',
  319.           historyURL        : 'chrome://browser/content/history/history-panel.xul',
  320.           sidebarID         : 'sidebar',
  321.           getMenuList       : function(){ return [document.getElementById('bookmarksBarContent'),document.getElementById('bookmarksMenuPopup'),document.getElementById('history-menu')]; }
  322.     }


  323.     // Main Block
  324.     {

  325.         //LibrayのBookmarkとHistoryの開き方を変更する.
  326.         if (window.location.href == 'chrome://browser/content/places/places.xul' ||
  327.             window.location.href == 'chrome://libraryinsidebar/content/sidebarPlacesOverlay.xul'){
  328.             BHNewTab.main.replaceOpenFolder(document);
  329.             window.addEventListener('dblclick',BHNewTab.main.callbackBookmarks,true);
  330.             window.addEventListener('click',BHNewTab.main.callbackBookmarks,true);
  331.             if(BHNewTab.USE_ENTERKEY) window.addEventListener('keypress',BHNewTab.main.callbackBookmarks,true);
  332.         }
  333.         // SidebarのBookmarkとHistoryの開き方を変更する.
  334.         if(window.location.href == BHNewTab.main.bookmarksURL){
  335.             BHNewTab.main.replaceOpenFolder(document);
  336.             window.addEventListener('click',BHNewTab.main.callbackBookmarks,true);
  337.             if(BHNewTab.USE_ENTERKEY) window.addEventListener('keypress',BHNewTab.main.callbackBookmarks,true);
  338.         }
  339.         if(window.location.href == BHNewTab.main.historyURL){
  340.             window.addEventListener('click',BHNewTab.main.callbackHistory,true);
  341.             if(BHNewTab.USE_ENTERKEY) window.addEventListener('keypress',BHNewTab.main.callbackHistory,true);
  342.         }

  343.         //Main windowの開き方を変更する.
  344.         if (window.location.href == 'chrome://browser/content/browser.xul'){
  345.           // 「Tabですべて開く」置き換え.
  346.           if(BHNewTab.TARGET_OPENFOLDER) BHNewTab.main.replaceOpenFolder(document);

  347.           // LocationBar決定時の機能置き換え.
  348.           if (BHNewTab.TARGET_LOCATIONBAR) {
  349.             if ("BrowserLoadURL" in window) {
  350.               BrowserLoadURL = function(event,post){
  351.                 gBrowser.userTypedValue = content.window.document.URL;
  352.                 BHNewTab.fakeReferrer = BHNewTab.FAKE_REFERRER;
  353.                 BHNewTab.openInTarget(gURLBar.value, event, 'locationbar', [post]);
  354.                 BHNewTab.fakeReferrer = false;
  355.                 content.focus();
  356.               };
  357.             } else {
  358.               gURLBar.handleCommand = function(aTriggeringEvent){
  359.                 if (aTriggeringEvent instanceof MouseEvent && aTriggeringEvent.button == 2)
  360.                   return; // Do nothing for right clicks

  361.                 var [url, postData] = this._canonizeURL(aTriggeringEvent);
  362.                 if (!url)
  363.                   return;

  364.                 this.value = url;
  365.                 gBrowser.userTypedValue = url;
  366.                 try {
  367.                   addToUrlbarHistory(url);
  368.                 } catch (ex) {
  369.                   // Things may go wrong when adding url to session history,
  370.                   // but don't let that interfere with the loading of the url.
  371.                   Cu.reportError(ex);
  372.                 }
  373.                 BHNewTab.fakeReferrer = BHNewTab.FAKE_REFERRER;
  374.                 BHNewTab.openInTarget(gURLBar.value, aTriggeringEvent,'locationbar',[postData]);
  375.                 BHNewTab.fakeReferrer = false;
  376.                 content.focus();
  377.               };
  378.             }
  379.           }

  380.           // Home Button Click時の機能置き換え.
  381.           if(BHNewTab.TARGET_HOMEBUTTON) BrowserHomeClick = function(event){
  382.               if(event.button == 2) return;
  383.               BHNewTab.openInTarget(gHomeButton.getHomePage(),event,'homebutton');
  384.               content.focus();
  385.           };
  386.           if(BHNewTab.TARGET_HOMEBUTTON) BrowserGoHome = function(event){
  387.               if(event.button == 2) return;
  388.               BHNewTab.openInTarget(gHomeButton.getHomePage(),event,'homebutton');
  389.           };

  390.           // Searchbar入力時の機能置き換え.
  391.           try{
  392.               if (BHNewTab.FX3) {
  393.                 var Object = BrowserSearch.Object;
  394.               } else {
  395.                 var Object = BrowserSearch.getObject();
  396.               };
  397.               if(BHNewTab.TARGET_Object) {
  398.                 Object.handleSearchCommand = function(event){
  399.                   var value = (this.getAttribute('empty') == 'true') ? '' : this._textbox.value;
  400.                   if(value) this._textbox._formHistSvc.addEntry(this._textbox.getAttribute('autocompletesearchparam'),value);
  401.                   if(BHNewTab.KEYWORDS_IN_Object) { //2008/07/08
  402.                     var shortcutURL = null;
  403.                     var aPostDataRef = {};
  404.                     var offset = value.indexOf(" ");
  405.                     if (offset > 0) {
  406.                       shortcutURL = getShortcutOrURI(value, aPostDataRef);
  407.                       if (shortcutURL && shortcutURL != value){
  408.                         BHNewTab.openInTarget(shortcutURL,event,'Object',[aPostDataRef.value]);
  409.                         content.focus();
  410.                         return;
  411.                       } else if (!shortcutURL){
  412.                         return;
  413.                       }
  414.                     }
  415.                   }
  416.                   var submission = this.currentEngine.getSubmission(value,null);
  417.                   if(!submission) return;
  418.                   BHNewTab.openInTarget(submission.uri.spec,event,'Object',[submission.postData]);
  419.                   content.focus();
  420.                 };
  421.               } else {


  422.               }
  423.           }
  424.           catch(e){}

  425.           // Bookmark ToolbarとMenu,HistoryMenuの開き方を変更する.
  426.           let setOpener = function(){
  427.               var menu = BHNewTab.main.getMenuList();
  428.               if(!menu[0] || !menu[1] || !menu[2]) return false;
  429.               for(let i = 0,max = menu.length;i < max;++i){ menu.addEventListener('command', BHNewTab.main.callbackBHMenu,true); }
  430.               for(let i = 0,max = menu.length;i < max;++i){ menu.addEventListener('click', function(event){if (event.button==1)BHNewTab.main.callbackBHMenu(event);},true); }
  431.               return true;
  432.           };

  433.           // 機能の置き換えを可能な限り試みる.
  434.           let(timer,count = 0) timer = setInterval(function(){ if(++count > TRY_LIMIT || setOpener()) clearInterval(timer); }, TRY_INTERVAL);

  435.           //ToolbarのCustomize後も機能が有効になるように再定義
  436.           BHNewTab.CustomizeToolbars =function(event){
  437.               switch(event.type){
  438.                 case "DOMAttrModified":
  439.                   if (event.attrName == "disabled" && !event.newValue){
  440.                     var menu = BHNewTab.main.getMenuList();
  441.                     if (!menu[0])
  442.                       return;
  443.                     menu[0].addEventListener('command', BHNewTab.main.callbackBHMenu,true);
  444.                     menu[0].addEventListener('click', function(event){if (event.button==1)BHNewTab.main.callbackBHMenu(event);},true);
  445.                   }
  446.                   break;
  447.               }
  448.           }
  449.           document.getElementById("cmd_CustomizeToolbars").
  450.                    addEventListener("DOMAttrModified", BHNewTab.CustomizeToolbars, false);
  451.         }
  452.     }

  453. };
  454. BHNewTab();

  455. ////////////////////
  456. // 双击关闭标签页 //
  457. ////////////////////
  458. function TabClick(e, DblClick) {
  459.     if (e.ctrlKey || e.shiftKey || e.altKey)
  460.         return;
  461.     if (DblClick==1 && e.button!=0) return;
  462.     if (DblClick==0 && e.button!=1) return;

  463.     var aTab = e.originalTarget;
  464.     if (aTab.localName=="toolbarbutton")
  465.         return;
  466.     while(aTab.localName != "tabs") {
  467.         if (aTab.localName == "tab")
  468.             break;
  469.         else
  470.             aTab = aTab.parentNode;
  471.     }
  472.     if (aTab.localName != "tab") {
  473.         if (DblClick == 1)
  474.             BrowserOpenTab();
  475.         else
  476.             undoCloseTab();
  477.     }
  478.     else if(gBrowser.mTabContainer.childNodes.
  479.         length == 1)
  480.         openUILinkIn("about:blank", "current");
  481.     else
  482.         gBrowser.removeTab(aTab);
  483. }
  484. function TabBarClick(e) {
  485.     if (e) TabClick(e, 0);
  486. }
  487. function TabBarDblClick(e) {
  488.     if (e) TabClick(e, 1);
  489. }
  490. getBrowser().onTabClick = TabBarClick;
  491. getBrowser().onTabBarDblClick = TabBarDblClick;

  492. ////////////////////
  493. // 右侧激活新标签 //
  494. ////////////////////
  495. (function OpenTabsNext() {

  496. var mOffset = 1;
  497. var mIsOpening = false;

  498. gBrowser.addEventListener("TabOpen", function OTN_onTabOpen(aEvent) {
  499.   mIsOpening = true;
  500.   this.moveTabTo(aEvent.originalTarget, this.selectedTab._tPos + mOffset++);
  501.   mIsOpening = false;
  502. }, false);

  503. gBrowser.addEventListener("TabMove", function OTN_onTabMove(aEvent) {
  504.   if (!mIsOpening)
  505.     mOffset = 1;
  506. }, false);

  507. gBrowser.addEventListener("TabSelect", function OTN_onTabSelect(aEvent) {
  508.   mOffset = 1;
  509. }, false);

  510. gBrowser.addEventListener("TabClose", function OTN_onTabClose(aEvent) {
  511.   var difference = aEvent.originalTarget._tPos - this.selectedTab._tPos;
  512.   if (0 < difference && difference < mOffset)
  513.     mOffset--;
  514. }, false);

  515. })();


  516. //////////////////////
  517. // 自动关闭空白标签 //
  518. //////////////////////
  519. (function(){
  520.   if('TM_init' in window) return;
  521.   //起動時フラグon
  522.   var firstTime = true;
  523.   var timer;
  524.   function callback(event){
  525.     //AutoCloseBlankTabをキャンセル
  526.     clearTimeout(timer);
  527.     //Fxネイティブの起動時セッションの復元ならスキップ
  528.     if((firstTime || typeof gSessionManager != 'undefined') && event.type == 'SSTabRestored') return;
  529.     //拡張機能Session Managerのセッションの復元中ならスキップ
  530.     if(typeof gSessionManager != 'undefined' && gSessionManager.loadingSession) return;

  531.     //起動時フラグoff
  532.     firstTime = false;
  533.     //AutoCloseBlankTabの処理
  534.     //自分自身のタブ
  535.     var last = event.originalTarget;
  536.     timer=setTimeout(function(){
  537.       var tab = gBrowser.mTabs;
  538.       var max = tab.length;
  539.       if(max <= 1) return;
  540.       for(var i = 0;i < max;++i){
  541.         //着目タブが自分自身, ビジー, 読み込み中またはabout:blankでない場合はスキップ
  542.         if(tab == last
  543.           || tab.linkedBrowser.docShell.busyFlags
  544.           || tab.linkedBrowser.docShell.restoringDocument
  545.           || tab.linkedBrowser.contentDocument.URL != 'about:blank')
  546.         continue;
  547.         //タブ削除
  548.         setTimeout(function(aTab){
  549.           try {
  550.             if (!aTab.linkedBrowser.docShell.busyFlags
  551.             && !aTab.linkedBrowser.docShell.restoringDocument
  552.             && aTab.linkedBrowser.contentDocument.URL == 'about:blank')
  553.               gBrowser.removeTab(aTab);
  554.           } catch(e) {}
  555.         }, 0, tab);
  556.         return;
  557.       }
  558.     },10);
  559.   }
  560.   //イベントフック登録
  561.   gBrowser.tabContainer.addEventListener('TabOpen',callback,false);
  562.   gBrowser.tabContainer.addEventListener('SSTabRestored',callback,false);
  563.   //拡張機能Session Managerにも対応するためパッチ
  564.   if(typeof gSessionManager != 'undefined'){
  565.     var func = gSessionManager.load.toString();
  566.     func = func.replace(/{/,'{gSessionManager.loadingSession=true;');
  567.     func = func.replace(/var tabcount/,'gSessionManager.loadingSession=true;var tabcount');
  568.     func = func.replace(/}, 0\);/,'gSessionManager.loadingSession=false;}, 0);');
  569.     eval('gSessionManager.load = ' + func);
  570.   }
  571. })();
复制代码
楼上的,能不能打包个附件发上来
直接复制的代码不能用
楼上的,能不能打包个附件发上来
直接复制的代码不能用
feelspace 发表于 2009-4-16 18:28
你先复制到最下的回复里,之後再复制一次就可以,但图上的设置好像改了都无用,全是当前标签打开的,如何新标签打开?
附件: 您所在的用户组无法下载或查看附件
楼上的,能不能打包个附件发上来
直接复制的代码不能用
feelspace 发表于 2009-4-16 18:28
好吧,如你所愿……

附件: 您所在的用户组无法下载或查看附件
这个脚本只是让网址在新标签页中打开,并不能实现楼主所要的视觉效果。另外这个脚本修改的时候不要用记事本,记事本修改保存后可能会失效。不妨用ultraedit编辑。
听老人说,今生做千件好事,来世方能讨生为猫。
这个脚本只是让网址在新标签页中打开,并不能实现楼主所要的视觉效果。另外这个脚本修改的时候不要用记事本,记事本修改保存后可能会失效。不妨用ultraedit编辑。 ...
harnack 发表于 2009-4-17 20:18
楼主喜欢的功能前面不是已经有达人分享了吗……
成功,我可不用tab mix plus 了 , 谢谢 , 但如可以改一下更好 , 如效果可以从图1变成图2就完美了
ubcw8583 发表于 2009-4-14 18:51
  1. .tabbrowser-arrowscrollbox {
  2.   padding-left: 15px;
  3.   padding-right: 15px;
  4. }
复制代码
谢谢,试试