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

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

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

[交流] 自用火狐脚本,火狐48正常使用,开启多进程后部分失效

  1. (function() {


  2.         // 新标签打开:书签、历史、搜索栏
  3.         try {
  4.                 eval('openLinkIn=' + openLinkIn.toString().
  5.                 replace('w.gBrowser.selectedTab.pinned', '(!w.isTabEmpty(w.gBrowser.selectedTab) || [code](function() {


  6.         // 新标签打开:书签、历史、搜索栏
  7.         try {
  8.                 eval('openLinkIn=' + openLinkIn.toString().
  9.                 replace('w.gBrowser.selectedTab.pinned', '(!w.isTabEmpty(w.gBrowser.selectedTab) || [        DISCUZ_CODE_1        ]amp;)').
  10.                 replace(/&&\s+w\.gBrowser\.currentURI\.host != uriObj\.host/, ''));
  11.     }catch(e){}

  12.     // 地址栏新标签打开
  13.    try {
  14.                 location=="chrome://browser/content/browser.xul" &&
  15.                 eval("gURLBar.handleCommand="+gURLBar.handleCommand.toString().replace(/^\s*(load.+);/gm,
  16.                 "if(/^javascript:/.test(url)||isTabEmpty(gBrowser.selectedTab)){loadCurrent();}else{this.handleRevert();gBrowser.loadOneTab(url, {postData: postData, inBackground: false, allowThirdPartyFixup: true});}"));
  17.     }catch(e){}
  18.         // 标签上双击刷新
  19. gBrowser.mTabContainer.addEventListener('dblclick', function (event){
  20. if (event.target.localName == 'tab' && event.button == 0){
  21. getBrowser().getBrowserForTab(event.target).reload();
  22. }
  23. }, false);


  24.         //右键关闭标签页,ctrl+右键打开菜单
  25.     gBrowser.mTabContainer.addEventListener("click",
  26.     function(e) {
  27.         if (e.target.localName == "tab" && e.button == 2 && !e.ctrlKey) {
  28.             e.preventDefault();
  29.             gBrowser.removeTab(e.target);
  30.                         e.stopPropagation();
  31.         }
  32.     },
  33.     false);
  34. //中键点击书签页菜单不关闭
  35.     try {
  36.         eval('BookmarksEventHandler.onClick =' + BookmarksEventHandler.onClick.toString().replace('node.hidePopup()', ''));
  37.         eval('checkForMiddleClick =' + checkForMiddleClick.toString().replace('closeMenus(event.target);', ''));
  38.     } catch(e) {}
  39.        


  40.         //自动关闭下载产生的空白标签
  41.         eval("gBrowser.mTabProgressListener = " + gBrowser.mTabProgressListener.toString().replace(/(?=var location)/, '\
  42.       if (aWebProgress.DOMWindow.document.documentURI == "about:blank"\
  43.           && aRequest.QueryInterface(nsIChannel).URI.spec != "about:blank") {\
  44.         aWebProgress.DOMWindow.setTimeout(function() {\
  45.           !aWebProgress.isLoadingDocument && aWebProgress.DOMWindow.close();\
  46.         }, 100);\
  47.       }\
  48.     '));

  49. })();


  50. //自定义新建标签页


  51. (function() {

  52.     var BrowserNewtabUrl = {

  53.         init: function() {
  54.             BrowserNewtabUrl.addPrefListener(BrowserNewtabUrl.BNUPrefListener); // 登録処理
  55.             window.addEventListener('unload', function() {
  56.                 BrowserNewtabUrl.removePrefListener(BrowserNewtabUrl.BNUPrefListener);
  57.             }, false);
  58.             this.updateURL();
  59.             this.addmenuitem();
  60.         },

  61.         updateURL: function() {
  62.             try {
  63.                 Services.prefs.getCharPref("browser.newtab.url");
  64.             } catch (e) {
  65.                 //about:config?filter=browser.newtab.url
  66.                 Services.prefs.setCharPref("browser.newtab.url", "about:newtab");
  67.             }
  68.             const url = Services.prefs.getCharPref("browser.newtab.url");
  69.             if (Number(gAppInfo.version.substring(0, 2)) < 44)
  70.                 NewTabURL.override(url)
  71.             else
  72.                 aboutNewTabService.newTabURL = url;
  73.         },

  74.         ntoset: function() {
  75.             var bnu = Services.prefs.getCharPref("browser.newtab.url");
  76.             var text = prompt('', bnu);
  77.             Services.prefs.setCharPref("browser.newtab.url", text);
  78.             //this.updateURL();
  79.         },

  80.         addmenuitem: function() {
  81.             var ins = $("devToolsSeparator");
  82.             ins.parentNode.insertBefore($C("menuitem", {
  83.                 id: "NewTabOverride_set",
  84.                 class: "menuitem-iconic",
  85.                 label: "NewTabOverride",
  86.                 image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAACd0lEQVQ4jd2TXUiTcRTGT3RhUgk2ogUqTOZbXVgXIg6h4fqQmF7khdBVdyFYVgihkRQ1hKDhPnx1pZRFSFayyolRhGUkZcpWfqTZdO7d++5l3xt+bNPW04UTtI+LsG564Fz8Oef5cc7h/In+FxUSUep6IalmDbPISDeq10Upyt2kAd6i/pTi+R+bpSmkrq/KadbX7n/qGagDYp8Q/2KE4byy99LZvLYj+WmaHz0pmZmZRxmGOSaTy8rlclk5wzBlSsWuLtfLMgBmYKkX4NuBSDeAAWDhIg7npelXQ3bqDFp7LB5FMOSD1y/CGxARCHrA+WZxVWv41mepAGZbAXcrMN8O+7BmPku6+fiaVgoUBRoAWFyKwRfwIhDywR/0IBj2IxoLo6fPhq57NQAsQGIQgAN9nVWRn/ZQWqpmAUAQOHD8DDjeAV5wguNnMMXZYekxY7T/CqzWDrDXm2GzPgPwChnSLUVrQMXFh64BCQgivwxyOeAWXRifHIHT7cDDzjbUayrxpNsC6/AYsrN3Xy4pUTTs3ZN1Zg0od19uDYAkyAGX4MQMN42Po0P4bB/Bm3ev0T84hIWvcwAAiURyYJV9A0ml29WFhYrTJ6sqXyxE58C7OThd0xDcHCanxmEbeY+xiQ9wClNwe51widOIzPlRUXHiseqgqlIikeQTEdGFutoJ/EYJxBFdigCIA0j8sqb6XPXyYapUyjv3H3SE2CZW1Dc2eAysztfI6gNsszGo02tDOqM2bGR1oSaTMWhqaQzcaDX5Wm6ZPLfv3hTNj8xhpVKpXZkvlYjSiWgrEW0joh1ElEFEMiLKSYY8+c5I5lfq0+kvfN5/o++IQ7gOwp/D5AAAAABJRU5ErkJggg==",
  87.                 oncommand: "BrowserNewtabUrl.ntoset();",
  88.             }), ins);
  89.         },
  90.         // 監視を開始する
  91.         addPrefListener: function(aObserver) {
  92.             try {
  93.                 var pbi = Components.classes['@mozilla.org/preferences;1'].getService(Components.interfaces.nsIPrefBranch2);
  94.                 pbi.addObserver(aObserver.domain, aObserver, false);
  95.             } catch (e) {}
  96.         },
  97.         // 監視を終了する
  98.         removePrefListener: function(aObserver) {
  99.             try {
  100.                 var pbi = Components.classes['@mozilla.org/preferences;1'].getService(Components.interfaces.nsIPrefBranch2);
  101.                 pbi.removeObserver(aObserver.domain, aObserver);
  102.             } catch (e) {}
  103.         },

  104.         BNUPrefListener: {
  105.             domain: 'browser.newtab.url',
  106.             observe: function(aSubject, aTopic, aPrefstring) {
  107.                 if (aTopic == 'nsPref:changed') {
  108.                     BrowserNewtabUrl.updateURL();
  109.                 }
  110.             }
  111.         }

  112.     };

  113.     //let tbtset = {
  114.     //    startup: function() {
  115.     //        var tbt = $("tabbrowser-tabs");
  116.     //        var newTabBtn = document.getAnonymousElementByAttribute(tbt, "class", "tabs-newtab-button");
  117.     //        newTabBtn.addEventListener('mouseover', BrowserNewtabUrl.updateURL, false);
  118.     //    },
  119.     //};

  120.     //tbtset.startup();
  121.     BrowserNewtabUrl.init();
  122.     window.BrowserNewtabUrl = BrowserNewtabUrl;

  123.     function $(id) {
  124.         return document.getElementById(id);
  125.     }

  126.     function $C(name, attr) {
  127.         var el = document.createElement(name);
  128.         if (attr) Object.keys(attr)
  129.             .forEach(function(n) el.setAttribute(n, attr[n]));
  130.         return el;
  131.     }

  132. }());



  133. // 右键点击链接新标签后台打开
  134. (function() {
  135.   var gTimer = null;

  136.   function findLink(element) {
  137.                 // Super_start
  138.                 if (element.className == 'site-snapshot') {
  139.                         return element.parentNode;
  140.                 }
  141.           
  142.     switch (element.tagName) {
  143.             case 'A': return element;

  144.             case 'B': case 'I': case 'SPAN': case 'SMALL':
  145.             case 'STRONG': case 'EM': case 'BIG': case 'SUB':
  146.             case 'SUP': case 'IMG': case 'S':
  147.             case 'FONT':
  148.               var parent = element.parentNode;
  149.               return parent && findLink(parent);

  150.             default:
  151.               return null;
  152.     }
  153.   }

  154.   function click(element, view) {
  155.     var e = document.createEvent('MouseEvents');
  156.     e.initMouseEvent('click', true, true, view, 0,
  157.                      0, 0, 0, 0, false, false, false, false, 0, element);
  158.     return !element.dispatchEvent(e);
  159.   }

  160.   function openTab(href) {
  161.     if ('TreeStyleTabService' in window)
  162.       TreeStyleTabService.readyToOpenChildTab(gBrowser.selectedTab, false);
  163.     return gBrowser.addTab(href);
  164.   }


  165.   function findFrames(frame) {
  166.     var frames = frame.frames;
  167.     var fs = {};

  168.     for (var i = 0, len = frames.length; i < len; ++i) {
  169.       var f = frames[i];
  170.       fs[f.name] = f;

  171.       var children = findFrames(f);
  172.       for (k in children) {
  173.         var f = children[k];
  174.         fs[f.name] = f;
  175.       }
  176.     }

  177.     return fs;
  178.   }

  179.   function followLink(args) {
  180.     var link = args.link;
  181.     var newTab = args.newTab;
  182.     var window = args.window;
  183.     var activate = args.activate;
  184.     var href = link.href;
  185.     var target = link.target;

  186.     if (newTab) {
  187.       var tab = openTab(href);
  188.       if (activate) {
  189.         gBrowser.selectedTab = tab;
  190.       }
  191.     } else if (!target || target == '_self') {
  192.       window.location.href = href;
  193.     } else {
  194.       switch (target) {
  195.       case '_top':
  196.         window.top.location.href = href;
  197.         break;

  198.       case '_parent':
  199.         window.parent.location.href = href;
  200.         break;

  201.       case '_blank':
  202.         gBrowser.selectedTab = gBrowser.addTab(href);
  203.         break;

  204.       default:
  205.         var frames = findFrames(window.top);
  206.         var frame = frames[target];

  207.         if (frame) {
  208.           frame.location.href = href;
  209.         } else {
  210.           gBrowser.selectedTab = gBrowser.addTab(href);
  211.         }
  212.       }
  213.     }
  214.   }

  215.   gBrowser.mPanelContainer.addEventListener('click', function(e) {
  216.     if (e.button == 2 && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
  217.       var link = findLink(e.target);
  218.       if (link) {
  219.         var href = link.href;

  220.         if (href && href.match(/^(https?|ftp):\/\//)) {
  221.           e.preventDefault();
  222.           e.stopPropagation();

  223.           if (!gTimer) {
  224.             gTimer = setTimeout(function() {
  225.               try {
  226.                 // if (click(link, e.view)) {
  227.                   followLink({ link: link, window: e.view, newTab: true, activate: false });
  228.                 // }
  229.                 clearTimeout(gTimer);
  230.               } finally {
  231.                 gTimer = null;
  232.               }
  233.             }, 200);
  234.           }
  235.         }
  236.       }
  237.     }
  238.   }, false);

  239.   
  240.   
  241.   function bookmarkClicked(e) {
  242.         if (e.button == 2 && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
  243.       let target = e.originalTarget;
  244.       let aNode = target._placesNode
  245.       if (aNode && PlacesUtils.nodeIsBookmark(aNode)) {
  246.         e.preventDefault();
  247.         e.stopPropagation();
  248.         
  249.         PlacesUIUtils._openNodeIn(aNode, 'tabshifted', window);
  250.       }
  251.     }
  252.   }

  253. })();




  254. //缩放

  255. (function() {
  256.         FullZoom.onLocationChange = (function(aURI, aIsTabSwitch, aBrowser) {
  257.                 var val = 1.35;
  258.                 var browser = aBrowser || gBrowser.selectedBrowser;
  259.                 FullZoom._applyPrefToSetting ? FullZoom._applyPrefToSetting(val, browser) : FullZoom._applyPrefToZoom(val, browser);
  260.         }).bind(FullZoom);
  261. }());

  262. //拖拽

  263. location == "chrome://browser/content/browser.xul" && (function(event) {
  264.         var self = arguments.callee;
  265.         if (!event) {
  266.                 ["dragstart", "dragover", "drop"].forEach(function(type) {
  267.                         gBrowser.mPanelContainer.addEventListener(type, self, false);
  268.                 });
  269.                 window.addEventListener("unload", function() {
  270.                         ["dragstart", "dragover", "drop"].forEach(function(type) {
  271.                                 gBrowser.mPanelContainer.removeEventListener(type, self, false);
  272.                         });
  273.                 }, false);
  274.                 return;
  275.         }
  276.         switch (event.type) {
  277.         case "dragstart":
  278.                 {
  279.                         self.startPoint = [event.screenX, event.screenY];
  280.                         self.sourceNode = event.target;
  281.                         event.target.localName == "img" && event.dataTransfer.setData("application/x-moz-file-promise-url", event.target.src);
  282.                         break;
  283.                 }
  284.         case "dragover":
  285.                 {
  286.                         self.startPoint && (Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService).getCurrentSession().canDrop = true);
  287.                         break;
  288.                 }
  289.         case "drop":
  290.                 {
  291.                         if (self.startPoint && event.target.localName != "textarea" && (!(event.target.localName == "input" && (event.target.type == "text" || event.target.type == "password"))) && event.target.contentEditable != "true") {
  292.                                 event.preventDefault();
  293.                                 event.stopPropagation();
  294.                                 var [subX, subY] = [event.screenX - self.startPoint[0], event.screenY - self.startPoint[1]];
  295.                                 var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))];
  296.                                 var direction;
  297.                                 if (distX > distY) direction = subX < 0 ? "L" : "R";
  298.                                 else direction = subY < 0 ? "U" : "D";
  299.                                 if (event.dataTransfer.types.contains("application/x-moz-file-promise-url")) {
  300.                                         if (direction == "D") {
  301.                                                 //搜索相似图片(Google)
  302.                                                 gBrowser.selectedTab = gBrowser.addTab("https://www.google.com/searchbyimage?image_url=" + encodeURIComponent(event.dataTransfer.getData("application/x-moz-file-promise-url")));
  303.                                                 return;
  304.                                         }
  305.                                         if (direction == "U") {
  306.                                                 //搜索相似图片(百度)
  307.                                                 gBrowser.selectedTab = gBrowser.addTab("http://stu.baidu.com/i?rt=0&rn=10&ct=1&tn=baiduimage&objurl=" + encodeURIComponent(event.dataTransfer.getData("application/x-moz-file-promise-url")));
  308.                                                 return;
  309.                                         }
  310.                                         if (direction == "L") {
  311.                                                 //复制图片地址
  312.                                                 Components.classes['@mozilla.org/widget/clipboardhelper;1'].createInstance(Components.interfaces.nsIClipboardHelper).copyString(event.dataTransfer.getData("application/x-moz-file-promise-url"));
  313.                                                 return;
  314.                                         }
  315.                                         if (direction == "R") {
  316.                                                 //下载图片
  317.                                                 saveImageURL(event.dataTransfer.getData("application/x-moz-file-promise-url"), null, null, null, null, null, document);
  318.                                                 return;
  319.                                         }
  320.                                 } else if (event.dataTransfer.types.contains("text/x-moz-url")) {
  321.                                         if (direction == "U") {
  322.                                                 //新标签打开链接(前台)
  323.                                                 gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
  324.                                                 return;
  325.                                         }
  326.                                         if (direction == "D") {
  327.                                                 //新标签打开链接(前台)
  328.                                                 gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
  329.                                                 return;
  330.                                         }
  331.                                 } else {
  332.                                         if (direction == "U") {
  333.                                                 //baidu搜索选中文字(前台)[识别URL并打开]
  334.                                                 /^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:text\/[\u0025-\u007a]+)\s*$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode"))) || (gBrowser.selectedTab = gBrowser.addTab("https://www.baidu.com/s?wd=" + event.dataTransfer.getData("text/unicode")));
  335.                                                 return;
  336.                                         }
  337.                                         if (direction == "D") {
  338.                                                 //google搜索选中文字(前台)[识别URL并打开]
  339.                                                 /^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:text\/[\u0025-\u007a]+)\s*$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode"))) || (gBrowser.selectedTab = gBrowser.addTab("https://www.google.com/ncr#q=" + event.dataTransfer.getData("text/unicode")));
  340.                                                 return;
  341.                                         }
  342.                                         if (direction == "L") {
  343.                                                 //自定义搜索选中文字(前台)[识别URL并打开]
  344.                                                 /^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:text\/[\u0025-\u007a]+)\s*$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode"))) || (gBrowser.selectedTab = gBrowser.addTab("https://twitter.com/search?q=" + event.dataTransfer.getData("text/unicode")));
  345.                                                 return;
  346.                                         }
  347.                                         if (direction == "R") {
  348.                                                 //翻译(前台)[识别URL并打开]
  349.                                                 /^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:text\/[\u0025-\u007a]+)\s*$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode"))) || (gBrowser.selectedTab = gBrowser.addTab("https://translate.google.com/#auto/zh-CN/" + event.dataTransfer.getData("text/unicode")));
  350.                                                 return;
  351.                                         }
  352.                                 }
  353.                                 self.startPoint = 0;
  354.                         }
  355.                 }
  356.         }
  357. })()



  358. //延迟扩展启动
  359. -function() {
  360.     Cu.import('resource://gre/modules/AddonManager.jsm');
  361.     let tool = {
  362.         addons: [//about:support 可看到所有扩展ID
  363.                   'uBlock0@raymondhill.net',//uBlock Origin
  364.             'jid1-BoFifL9Vbdl2zQ@jetpack',//decen
  365.             'jid1-MnnxcxisBPnSXQ@jetpack',//Privacy Badger
  366.             'jid1-AVgCeF1zoVzMjA@jetpack',//Random Agent Spoofer
  367.         ],
  368.         toggleDelay: function(disable) {
  369.             for(let id of this.addons)
  370.                 AddonManager.getAddonByID(id, a => a.userDisabled = disable);
  371.         },
  372.         //sessionstore-windows-restored final-ui-startup content-document-global-created
  373.         observe: function(aSubject, aTopic, aData) {
  374.             if ('quit-application' === aTopic) this.shutdown();
  375.         },
  376.         startup: function() {
  377.             //延迟加载扩展
  378.             setTimeout(() => this.toggleDelay(!1), 0);
  379.             Services.obs.addObserver(this, 'quit-application', false);
  380.         },
  381.         shutdown: function() {
  382.             this.toggleDelay(!0);
  383.             Services.obs.removeObserver(this, 'quit-application');
  384.         }
  385.     }

  386.     tool.startup();
  387. }();
复制代码
amp;)').
                replace(/&&\s+w\.gBrowser\.currentURI\.host != uriObj\.host/, ''));
    }catch(e){}

    // 地址栏新标签打开
   try {
                location=="chrome://browser/content/browser.xul" &&
                eval("gURLBar.handleCommand="+gURLBar.handleCommand.toString().replace(/^\s*(load.+);/gm,
                "if(/^javascript:/.test(url)||isTabEmpty(gBrowser.selectedTab)){loadCurrent();}else{this.handleRevert();gBrowser.loadOneTab(url, {postData: postData, inBackground: false, allowThirdPartyFixup: true});}"));
    }catch(e){}
        // 标签上双击刷新
gBrowser.mTabContainer.addEventListener('dblclick', function (event){
if (event.target.localName == 'tab' && event.button == 0){
getBrowser().getBrowserForTab(event.target).reload();
}
}, false);


        //右键关闭标签页,ctrl+右键打开菜单
    gBrowser.mTabContainer.addEventListener("click",
    function(e) {
        if (e.target.localName == "tab" && e.button == 2 && !e.ctrlKey) {
            e.preventDefault();
            gBrowser.removeTab(e.target);
                        e.stopPropagation();
        }
    },
    false);
//中键点击书签页菜单不关闭
    try {
        eval('BookmarksEventHandler.onClick =' + BookmarksEventHandler.onClick.toString().replace('node.hidePopup()', ''));
        eval('checkForMiddleClick =' + checkForMiddleClick.toString().replace('closeMenus(event.target);', ''));
    } catch(e) {}
       


        //自动关闭下载产生的空白标签
        eval("gBrowser.mTabProgressListener = " + gBrowser.mTabProgressListener.toString().replace(/(?=var location)/, '\
      if (aWebProgress.DOMWindow.document.documentURI == "about:blank"\
          && aRequest.QueryInterface(nsIChannel).URI.spec != "about:blank") {\
        aWebProgress.DOMWindow.setTimeout(function() {\
          !aWebProgress.isLoadingDocument && aWebProgress.DOMWindow.close();\
        }, 100);\
      }\
    '));

})();


//自定义新建标签页


(function() {

    var BrowserNewtabUrl = {

        init: function() {
            BrowserNewtabUrl.addPrefListener(BrowserNewtabUrl.BNUPrefListener); // 登録処理
            window.addEventListener('unload', function() {
                BrowserNewtabUrl.removePrefListener(BrowserNewtabUrl.BNUPrefListener);
            }, false);
            this.updateURL();
            this.addmenuitem();
        },

        updateURL: function() {
            try {
                Services.prefs.getCharPref("browser.newtab.url");
            } catch (e) {
                //about:config?filter=browser.newtab.url
                Services.prefs.setCharPref("browser.newtab.url", "about:newtab");
            }
            const url = Services.prefs.getCharPref("browser.newtab.url");
            if (Number(gAppInfo.version.substring(0, 2)) < 44)
                NewTabURL.override(url)
            else
                aboutNewTabService.newTabURL = url;
        },

        ntoset: function() {
            var bnu = Services.prefs.getCharPref("browser.newtab.url");
            var text = prompt('', bnu);
            Services.prefs.setCharPref("browser.newtab.url", text);
            //this.updateURL();
        },

        addmenuitem: function() {
            var ins = $("devToolsSeparator");
            ins.parentNode.insertBefore($C("menuitem", {
                id: "NewTabOverride_set",
                class: "menuitem-iconic",
                label: "NewTabOverride",
                image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAACd0lEQVQ4jd2TXUiTcRTGT3RhUgk2ogUqTOZbXVgXIg6h4fqQmF7khdBVdyFYVgihkRQ1hKDhPnx1pZRFSFayyolRhGUkZcpWfqTZdO7d++5l3xt+bNPW04UTtI+LsG564Fz8Oef5cc7h/In+FxUSUep6IalmDbPISDeq10Upyt2kAd6i/pTi+R+bpSmkrq/KadbX7n/qGagDYp8Q/2KE4byy99LZvLYj+WmaHz0pmZmZRxmGOSaTy8rlclk5wzBlSsWuLtfLMgBmYKkX4NuBSDeAAWDhIg7npelXQ3bqDFp7LB5FMOSD1y/CGxARCHrA+WZxVWv41mepAGZbAXcrMN8O+7BmPku6+fiaVgoUBRoAWFyKwRfwIhDywR/0IBj2IxoLo6fPhq57NQAsQGIQgAN9nVWRn/ZQWqpmAUAQOHD8DDjeAV5wguNnMMXZYekxY7T/CqzWDrDXm2GzPgPwChnSLUVrQMXFh64BCQgivwxyOeAWXRifHIHT7cDDzjbUayrxpNsC6/AYsrN3Xy4pUTTs3ZN1Zg0od19uDYAkyAGX4MQMN42Po0P4bB/Bm3ev0T84hIWvcwAAiURyYJV9A0ml29WFhYrTJ6sqXyxE58C7OThd0xDcHCanxmEbeY+xiQ9wClNwe51widOIzPlRUXHiseqgqlIikeQTEdGFutoJ/EYJxBFdigCIA0j8sqb6XPXyYapUyjv3H3SE2CZW1Dc2eAysztfI6gNsszGo02tDOqM2bGR1oSaTMWhqaQzcaDX5Wm6ZPLfv3hTNj8xhpVKpXZkvlYjSiWgrEW0joh1ElEFEMiLKSYY8+c5I5lfq0+kvfN5/o++IQ7gOwp/D5AAAAABJRU5ErkJggg==",
                oncommand: "BrowserNewtabUrl.ntoset();",
            }), ins);
        },
        // 監視を開始する
        addPrefListener: function(aObserver) {
            try {
                var pbi = Components.classes['@mozilla.org/preferences;1'].getService(Components.interfaces.nsIPrefBranch2);
                pbi.addObserver(aObserver.domain, aObserver, false);
            } catch (e) {}
        },
        // 監視を終了する
        removePrefListener: function(aObserver) {
            try {
                var pbi = Components.classes['@mozilla.org/preferences;1'].getService(Components.interfaces.nsIPrefBranch2);
                pbi.removeObserver(aObserver.domain, aObserver);
            } catch (e) {}
        },

        BNUPrefListener: {
            domain: 'browser.newtab.url',
            observe: function(aSubject, aTopic, aPrefstring) {
                if (aTopic == 'nsPref:changed') {
                    BrowserNewtabUrl.updateURL();
                }
            }
        }

    };

    //let tbtset = {
    //    startup: function() {
    //        var tbt = $("tabbrowser-tabs");
    //        var newTabBtn = document.getAnonymousElementByAttribute(tbt, "class", "tabs-newtab-button");
    //        newTabBtn.addEventListener('mouseover', BrowserNewtabUrl.updateURL, false);
    //    },
    //};

    //tbtset.startup();
    BrowserNewtabUrl.init();
    window.BrowserNewtabUrl = BrowserNewtabUrl;

    function $(id) {
        return document.getElementById(id);
    }

    function $C(name, attr) {
        var el = document.createElement(name);
        if (attr) Object.keys(attr)
            .forEach(function(n) el.setAttribute(n, attr[n]));
        return el;
    }

}());



// 右键点击链接新标签后台打开
(function() {
  var gTimer = null;

  function findLink(element) {
                // Super_start
                if (element.className == 'site-snapshot') {
                        return element.parentNode;
                }
          
    switch (element.tagName) {
            case 'A': return element;

            case 'B': case 'I': case 'SPAN': case 'SMALL':
            case 'STRONG': case 'EM': case 'BIG': case 'SUB':
            case 'SUP': case 'IMG': case 'S':
            case 'FONT':
              var parent = element.parentNode;
              return parent && findLink(parent);

            default:
              return null;
    }
  }

  function click(element, view) {
    var e = document.createEvent('MouseEvents');
    e.initMouseEvent('click', true, true, view, 0,
                     0, 0, 0, 0, false, false, false, false, 0, element);
    return !element.dispatchEvent(e);
  }

  function openTab(href) {
    if ('TreeStyleTabService' in window)
      TreeStyleTabService.readyToOpenChildTab(gBrowser.selectedTab, false);
    return gBrowser.addTab(href);
  }


  function findFrames(frame) {
    var frames = frame.frames;
    var fs = {};

    for (var i = 0, len = frames.length; i < len; ++i) {
      var f = frames;
      fs[f.name] = f;

      var children = findFrames(f);
      for (k in children) {
        var f = children[k];
        fs[f.name] = f;
      }
    }

    return fs;
  }

  function followLink(args) {
    var link = args.link;
    var newTab = args.newTab;
    var window = args.window;
    var activate = args.activate;
    var href = link.href;
    var target = link.target;

    if (newTab) {
      var tab = openTab(href);
      if (activate) {
        gBrowser.selectedTab = tab;
      }
    } else if (!target || target == '_self') {
      window.location.href = href;
    } else {
      switch (target) {
      case '_top':
        window.top.location.href = href;
        break;

      case '_parent':
        window.parent.location.href = href;
        break;

      case '_blank':
        gBrowser.selectedTab = gBrowser.addTab(href);
        break;

      default:
        var frames = findFrames(window.top);
        var frame = frames[target];

        if (frame) {
          frame.location.href = href;
        } else {
          gBrowser.selectedTab = gBrowser.addTab(href);
        }
      }
    }
  }

  gBrowser.mPanelContainer.addEventListener('click', function(e) {
    if (e.button == 2 && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
      var link = findLink(e.target);
      if (link) {
        var href = link.href;

        if (href && href.match(/^(https?|ftp):\/\//)) {
          e.preventDefault();
          e.stopPropagation();

          if (!gTimer) {
            gTimer = setTimeout(function() {
              try {
                // if (click(link, e.view)) {
                  followLink({ link: link, window: e.view, newTab: true, activate: false });
                // }
                clearTimeout(gTimer);
              } finally {
                gTimer = null;
              }
            }, 200);
          }
        }
      }
    }
  }, false);

  
  
  function bookmarkClicked(e) {
        if (e.button == 2 && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
      let target = e.originalTarget;
      let aNode = target._placesNode
      if (aNode && PlacesUtils.nodeIsBookmark(aNode)) {
        e.preventDefault();
        e.stopPropagation();
        
        PlacesUIUtils._openNodeIn(aNode, 'tabshifted', window);
      }
    }
  }

})();




//缩放

(function() {
        FullZoom.onLocationChange = (function(aURI, aIsTabSwitch, aBrowser) {
                var val = 1.35;
                var browser = aBrowser || gBrowser.selectedBrowser;
                FullZoom._applyPrefToSetting ? FullZoom._applyPrefToSetting(val, browser) : FullZoom._applyPrefToZoom(val, browser);
        }).bind(FullZoom);
}());

//拖拽

location == "chrome://browser/content/browser.xul" && (function(event) {
        var self = arguments.callee;
        if (!event) {
                ["dragstart", "dragover", "drop"].forEach(function(type) {
                        gBrowser.mPanelContainer.addEventListener(type, self, false);
                });
                window.addEventListener("unload", function() {
                        ["dragstart", "dragover", "drop"].forEach(function(type) {
                                gBrowser.mPanelContainer.removeEventListener(type, self, false);
                        });
                }, false);
                return;
        }
        switch (event.type) {
        case "dragstart":
                {
                        self.startPoint = [event.screenX, event.screenY];
                        self.sourceNode = event.target;
                        event.target.localName == "img" && event.dataTransfer.setData("application/x-moz-file-promise-url", event.target.src);
                        break;
                }
        case "dragover":
                {
                        self.startPoint && (Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService).getCurrentSession().canDrop = true);
                        break;
                }
        case "drop":
                {
                        if (self.startPoint && event.target.localName != "textarea" && (!(event.target.localName == "input" && (event.target.type == "text" || event.target.type == "password"))) && event.target.contentEditable != "true") {
                                event.preventDefault();
                                event.stopPropagation();
                                var [subX, subY] = [event.screenX - self.startPoint[0], event.screenY - self.startPoint[1]];
                                var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))];
                                var direction;
                                if (distX > distY) direction = subX < 0 ? "L" : "R";
                                else direction = subY < 0 ? "U" : "D";
                                if (event.dataTransfer.types.contains("application/x-moz-file-promise-url")) {
                                        if (direction == "D") {
                                                //搜索相似图片(Google)
                                                gBrowser.selectedTab = gBrowser.addTab("https://www.google.com/searchbyimage?image_url=" + encodeURIComponent(event.dataTransfer.getData("application/x-moz-file-promise-url")));
                                                return;
                                        }
                                        if (direction == "U") {
                                                //搜索相似图片(百度)
                                                gBrowser.selectedTab = gBrowser.addTab("http://stu.baidu.com/i?rt=0&rn=10&ct=1&tn=baiduimage&objurl=" + encodeURIComponent(event.dataTransfer.getData("application/x-moz-file-promise-url")));
                                                return;
                                        }
                                        if (direction == "L") {
                                                //复制图片地址
                                                Components.classes['@mozilla.org/widget/clipboardhelper;1'].createInstance(Components.interfaces.nsIClipboardHelper).copyString(event.dataTransfer.getData("application/x-moz-file-promise-url"));
                                                return;
                                        }
                                        if (direction == "R") {
                                                //下载图片
                                                saveImageURL(event.dataTransfer.getData("application/x-moz-file-promise-url"), null, null, null, null, null, document);
                                                return;
                                        }
                                } else if (event.dataTransfer.types.contains("text/x-moz-url")) {
                                        if (direction == "U") {
                                                //新标签打开链接(前台)
                                                gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
                                                return;
                                        }
                                        if (direction == "D") {
                                                //新标签打开链接(前台)
                                                gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
                                                return;
                                        }
                                } else {
                                        if (direction == "U") {
                                                //baidu搜索选中文字(前台)[识别URL并打开]
                                                /^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:text\/[\u0025-\u007a]+)\s*$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode"))) || (gBrowser.selectedTab = gBrowser.addTab("https://www.baidu.com/s?wd=" + event.dataTransfer.getData("text/unicode")));
                                                return;
                                        }
                                        if (direction == "D") {
                                                //google搜索选中文字(前台)[识别URL并打开]
                                                /^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:text\/[\u0025-\u007a]+)\s*$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode"))) || (gBrowser.selectedTab = gBrowser.addTab("https://www.google.com/ncr#q=" + event.dataTransfer.getData("text/unicode")));
                                                return;
                                        }
                                        if (direction == "L") {
                                                //自定义搜索选中文字(前台)[识别URL并打开]
                                                /^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:text\/[\u0025-\u007a]+)\s*$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode"))) || (gBrowser.selectedTab = gBrowser.addTab("https://twitter.com/search?q=" + event.dataTransfer.getData("text/unicode")));
                                                return;
                                        }
                                        if (direction == "R") {
                                                //翻译(前台)[识别URL并打开]
                                                /^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:text\/[\u0025-\u007a]+)\s*$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode"))) || (gBrowser.selectedTab = gBrowser.addTab("https://translate.google.com/#auto/zh-CN/" + event.dataTransfer.getData("text/unicode")));
                                                return;
                                        }
                                }
                                self.startPoint = 0;
                        }
                }
        }
})()



//延迟扩展启动
-function() {
    Cu.import('resource://gre/modules/AddonManager.jsm');
    let tool = {
        addons: [//about:support 可看到所有扩展ID
                  'uBlock0@raymondhill.net',//uBlock Origin
            'jid1-BoFifL9Vbdl2zQ@jetpack',//decen
            'jid1-MnnxcxisBPnSXQ@jetpack',//Privacy Badger
            'jid1-AVgCeF1zoVzMjA@jetpack',//Random Agent Spoofer
        ],
        toggleDelay: function(disable) {
            for(let id of this.addons)
                AddonManager.getAddonByID(id, a => a.userDisabled = disable);
        },
        //sessionstore-windows-restored final-ui-startup content-document-global-created
        observe: function(aSubject, aTopic, aData) {
            if ('quit-application' === aTopic) this.shutdown();
        },
        startup: function() {
            //延迟加载扩展
            setTimeout(() => this.toggleDelay(!1), 0);
            Services.obs.addObserver(this, 'quit-application', false);
        },
        shutdown: function() {
            this.toggleDelay(!0);
            Services.obs.removeObserver(this, 'quit-application');
        }
    }

    tool.startup();
}();[/code]
1# moz123456 其中的拖拽脚本,右键点击链接新标签后台打开脚本,在开启多进程后失效,不知道有无解决方法。