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

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

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

[求助] 求助更改简单拖拽脚本和右键打开连接脚本在e10s下可用

谢谢
  1. /拖拽

  2. location == "chrome://browser/content/browser.xul" && (function(event) {
  3.         var self = arguments.callee;
  4.         if (!event) {
  5.                 ["dragstart", "dragover", "drop"].forEach(function(type) {
  6.                         gBrowser.mPanelContainer.addEventListener(type, self, false);
  7.                 });
  8.                 window.addEventListener("unload", function() {
  9.                         ["dragstart", "dragover", "drop"].forEach(function(type) {
  10.                                 gBrowser.mPanelContainer.removeEventListener(type, self, false);
  11.                         });
  12.                 }, false);
  13.                 return;
  14.         }
  15.         switch (event.type) {
  16.         case "dragstart":
  17.                 {
  18.                         self.startPoint = [event.screenX, event.screenY];
  19.                         self.sourceNode = event.target;
  20.                         event.target.localName == "img" && event.dataTransfer.setData("application/x-moz-file-promise-url", event.target.src);
  21.                         break;
  22.                 }
  23.         case "dragover":
  24.                 {
  25.                         self.startPoint && (Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService).getCurrentSession().canDrop = true);
  26.                         break;
  27.                 }
  28.         case "drop":
  29.                 {
  30.                         if (self.startPoint && event.target.localName != "textarea" && (!(event.target.localName == "input" && (event.target.type == "text" || event.target.type == "password"))) && event.target.contentEditable != "true") {
  31.                                 event.preventDefault();
  32.                                 event.stopPropagation();
  33.                                 var [subX, subY] = [event.screenX - self.startPoint[0], event.screenY - self.startPoint[1]];
  34.                                 var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))];
  35.                                 var direction;
  36.                                 if (distX > distY) direction = subX < 0 ? "L" : "R";
  37.                                 else direction = subY < 0 ? "U" : "D";
  38.                                 if (event.dataTransfer.types.contains("application/x-moz-file-promise-url")) {
  39.                                         if (direction == "D") {
  40.                                                 //搜索相似图片(Google)
  41.                                                 gBrowser.selectedTab = gBrowser.addTab("https://www.google.com/searchbyimage?image_url=" + encodeURIComponent(event.dataTransfer.getData("application/x-moz-file-promise-url")));
  42.                                                 return;
  43.                                         }
  44.                                         if (direction == "U") {
  45.                                                 //搜索相似图片(百度)
  46.                                                 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")));
  47.                                                 return;
  48.                                         }
  49.                                         if (direction == "L") {
  50.                                                 //复制图片地址
  51.                                                 Components.classes['@mozilla.org/widget/clipboardhelper;1'].createInstance(Components.interfaces.nsIClipboardHelper).copyString(event.dataTransfer.getData("application/x-moz-file-promise-url"));
  52.                                                 return;
  53.                                         }
  54.                                         if (direction == "R") {
  55.                                                 //下载图片
  56.                                                 saveImageURL(event.dataTransfer.getData("application/x-moz-file-promise-url"), null, null, null, null, null, document);
  57.                                                 return;
  58.                                         }
  59.                                 } else if (event.dataTransfer.types.contains("text/x-moz-url")) {
  60.                                         if (direction == "U") {
  61.                                                 //新标签打开链接(前台)
  62.                                                 gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
  63.                                                 return;
  64.                                         }
  65.                                         if (direction == "D") {
  66.                                                 //新标签打开链接(前台)
  67.                                                 gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
  68.                                                 return;
  69.                                         }
  70.                                 } else {
  71.                                         if (direction == "U") {
  72.                                                 //baidu搜索选中文字(前台)[识别URL并打开]
  73.                                                 /^\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")));
  74.                                                 return;
  75.                                         }
  76.                                         if (direction == "D") {
  77.                                                 //google搜索选中文字(前台)[识别URL并打开]
  78.                                                 /^\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")));
  79.                                                 return;
  80.                                         }
  81.                                         if (direction == "L") {
  82.                                                 //自定义搜索选中文字(前台)[识别URL并打开]
  83.                                                 /^\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")));
  84.                                                 return;
  85.                                         }
  86.                                         if (direction == "R") {
  87.                                                 //翻译(前台)[识别URL并打开]
  88.                                                 /^\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")));
  89.                                                 return;
  90.                                         }
  91.                                 }
  92.                                 self.startPoint = 0;
  93.                         }
  94.                 }
  95.         }
  96. })()
复制代码
还有右键点击打开连接
  1. // 右键点击链接新标签后台打开
  2. (function() {
  3.   var gTimer = null;

  4.   function findLink(element) {
  5.                 // Super_start
  6.                 if (element.className == 'site-snapshot') {
  7.                         return element.parentNode;
  8.                 }
  9.           
  10.     switch (element.tagName) {
  11.             case 'A': return element;

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

  18.             default:
  19.               return null;
  20.     }
  21.   }

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

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


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

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

  39.       var children = findFrames(f);
  40.       for (k in children) {
  41.         var f = children[k];
  42.         fs[f.name] = f;
  43.       }
  44.     }

  45.     return fs;
  46.   }

  47.   function followLink(args) {
  48.     var link = args.link;
  49.     var newTab = args.newTab;
  50.     var window = args.window;
  51.     var activate = args.activate;
  52.     var href = link.href;
  53.     var target = link.target;

  54.     if (newTab) {
  55.       var tab = openTab(href);
  56.       if (activate) {
  57.         gBrowser.selectedTab = tab;
  58.       }
  59.     } else if (!target || target == '_self') {
  60.       window.location.href = href;
  61.     } else {
  62.       switch (target) {
  63.       case '_top':
  64.         window.top.location.href = href;
  65.         break;

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

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

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

  75.         if (frame) {
  76.           frame.location.href = href;
  77.         } else {
  78.           gBrowser.selectedTab = gBrowser.addTab(href);
  79.         }
  80.       }
  81.     }
  82.   }

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

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

  91.           if (!gTimer) {
  92.             gTimer = setTimeout(function() {
  93.               try {
  94.                 // if (click(link, e.view)) {
  95.                   followLink({ link: link, window: e.view, newTab: true, activate: false });
  96.                 // }
  97.                 clearTimeout(gTimer);
  98.               } finally {
  99.                 gTimer = null;
  100.               }
  101.             }, 200);
  102.           }
  103.         }
  104.       }
  105.     }
  106.   }, false);

  107.   
  108.   
  109.   function bookmarkClicked(e) {
  110.         if (e.button == 2 && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
  111.       let target = e.originalTarget;
  112.       let aNode = target._placesNode
  113.       if (aNode && PlacesUtils.nodeIsBookmark(aNode)) {
  114.         e.preventDefault();
  115.         e.stopPropagation();
  116.         
  117.         PlacesUIUtils._openNodeIn(aNode, 'tabshifted', window);
  118.       }
  119.     }
  120.   }

  121. })();
复制代码