阅读:281回复:5
[已修复] OpenWith.uc脚本在136.0a1版本中失效了,有请大神修复
OpenWith.uc脚本在136.0a1版本中失效了,有请大神修复
// ==UserScript== // <a href="home.php?mod=space&uid=467097">@Name</a> OpenWith.uc.js // @description 用其他浏览器打开页面、链接、书签及标签 // <a href="home.php?mod=space&uid=321866">@author</a> ding // <a href="home.php?mod=space&uid=713796">@include</a> main // <a href="home.php?mod=space&uid=570682">@version</a> 2018.2.3.1 // @homepageURL https://bbs.kafan.cn/thread-2114879-1-1.html // @startup window.OpenWithManager.init(); // <a href="home.php?mod=space&uid=748274">@Shutdown</a> window.OpenWithManager.destroy(); // <a href="home.php?mod=space&uid=356229">@Note</a> 适配Firefox57+ // ==/UserScript== location.href.startsWith('chrome://browser/content/browser.x') && (function () { const MENU_NAME = "用其它浏览器打开"; //是否使用二级菜单 const USE_MENU_AREA = true; //页面 const USE_MENU_TAB = false; //标签 const USE_MENU_PLACE = false; //书签 function getFirefoxPath(){//firefox.exe所在路径 return OS.Constants.Path.libDir; } function getRootPath() {//firefox所在盘路径 var path = getFirefoxPath(); var index = path.indexOf(":"); return path.substring(0,index+1); } //修改内容后请将脚本改名来保证加载的是最新,或使用无缓存的userChrome.js var browsers = { Edge: { enable: true, name: "Edge", path: "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe", image: "data:image/png;base64,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" }, Chrome: { enable: true, name: "Chrome", path: "D:\\GoogleChromePortable64\\GoogleChromePortable.exe", image: "data:image/png;base64,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" }, Slimjet: { enable: true, name: "Slimjet", path: "D:\\Slimjet\\slimjet.exe", image: "data:image/png;base64,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" }, FireFox: { enable: true, name: "Firefox Nightly", path: "D:\\FirefoxNightly\\FirefoxPortable.exe", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAE5ElEQVRIx8WVW4hd5RXHf+vb93Oby5nO5FJlopKQ4qVSpQk+zB4otZVWBUHwTQRHEAVBCvWlM2OhUOhLoX2RFiuBgnlKKfUChTkVSm2tU1p0hIxOLibGZDKZOefsfc6+fd/Xh2OGBFuVltIFH+y1H9Zv/9f69n/BfxFPbP4s5n8Z7Y1nrZz8/mdC5IsUum/h+NIrb22CXx8dN2LPc725iwdW40A89roH5k/NLnQ+F3Dih0l87oyNn/pFcwkgOviDJe0GiwUehE3wGxA0IRpDPX8BO74GgCsh1dsPd77T2rv82/ua14Gca5O79z394o6XPfrlO47IpezwSpKXcTg5zYFvzOFMj5FeSsCLwA/hXo0VDTbCWAMz67Mfps3Z6tgLL/1bBc99833rReMM2y3SGThjr6BunuJ87xyrv34dwvFRi6ImzvMNdLQKVIC7W+P24q7lf9x559LVXF19+PPP83hfuY9a1MYJXUzg0JqZQQcOG385CaYCXYA1YAxyuYaUN4BtgA3BNMA0WHNPLz6zcTb+FGDjhLPoeBFGgfnkg7QDRkFwx1GmHvk2k/ffBjqHKsf8/jJ+MYtrG2BdsC5iQ7QOODG8sHgd4PXHirjqqxjACqAs1hn1zwiI69C8+UbGboygzKAYYN7uYlYHBMmteGYMMXVE1xA8zpbmegW9dXZfiB1VFT3K3QrGVcLmseOc+vErUA6gSKFIKY+to9/s0+reTrP6EqgmYiaQssb03z5Y2gU09tk5AEcsyoCqQGkwSYoZZBTv/Z3k3XXQ5ScKEij6UA3JX36L9GKdsL+fMN2DlC3EROy/YOa4On6bEysskgvKgKOFjdNrdMOStReOUwU+VNVIktGjQZcZKBerS6qts/QHB2nfNKDv9EkpuNy18S7Ac8yoHVpwCyiHORJETLRmGJ/ay/bFj/AVVGWOqYrRbRIHlANG4+oulR9gtyva/hjF2A7SHP1iLsDwvFp2sYu6snj5CDIdTaH9kCMPLrD+zgrbvSv4X5mlaIZcevOvpCfPQ6lRtiJqNrETMEhrtMmYSEL2RnD2KiCYMJTbispaggwmagGFdsgKRR4Kh77+LQZNGNagGxaE4zVOvfsrjAhSd5g8eJhhagGIcqFdKFJXlncVtI+WneJVtVhZIciFYAiTgUviWrYG2+TnN9F1h+2dM1z40xvkSUZDORhdMfnw/TQyD7VjQStqmeAoj3umTeeda63itbnBSpp78QCHPID+uJC0IGlZVtd+w+mTf0RZhwILIpjIZ+Kh79I6cheVGIrS4hQw0xcilXZeXhib51oT8Rvlsi6cuLKCFIIdgBXBivC1ww9wy23zXNp6n0QPoT1G7dAhTM3HbkMpCmMhGli8riY7N/zDvzS7lQd7K/2PgzjFpRQhb0CvIQzrMKxDFlqKuqUIRnaS+QqrQItFtCUcCnma8dVb9Pz3Hh/Z9qcWzqv39FYyHcYZDqUIRc2S1BR5bTTkIoAyMhSuYF2LVmCt4GiIlMGImf/Jj/zOZ2603917ZaXsNuIcRYGi9KCKIKkJZQCFD8aByht5lzGaoJ51Fn/amP/CK/PE0X7sNNXKoBdgEEoRSg9MYMlcReVDX4ZsD7YYv6HbWfzlrfP/0U5+bWFzSffqc1lCnO/46EpBZAj3aC5v+st2/1bnyZemOvy/4p94BjsVGJyURAAAAABJRU5ErkJggg==" }, others: { enable: false, name: "", path: "", image: "" }, all: { enable: true, name: "所有浏览器", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACjElEQVQ4T21TXUgUURT+zswuZZruTBRRFJHOvgRR0EMRCQkVQWUEai9WD+LWjtpDQfVQLRQYPUSFd0xSCMJ+pCIMC1+rh+itzMC964MIRRYzu2WitjsnZqZ1t637cOGce8937ved7xJKli5SawA0MfE+AJvAnAXoPYhfECsPbLNmsriEFgIxVaFR5i6AegIK+eBCo7cx4yII0uGqZpgrpr1ccPGmXKSF+C2BNpa+iMGvnCmjDgnKgpkiluxQiJrtLLajw5jzATQr2UOg1tJivyvQ7cSNePFZRCSPEWGbE4/GqFKkalTwGBGUUgAX6IWrXlZCuXL7uPGx+FyzkvdzrJwnTchOIpz9X/d8LsdoyJjGo3wcsVLtBD4NoJ90IYeZ2CZWvoD45D8aMEYc0yho0/NpiZadHgawFYRR0kXyiW1GDy3tGo+GFXfsj9qjv3LYqYa5VnHJdEyjLg+sCfmQyJ/KjD8FTcinjmkcRICcIaJQsXCRrmRtui36cgHAkhMErPVjxnefgm0ae7w4YqWOKuyeADANoueuqz5Ot62fKKali5Rnsn4CVAa/I3+ECt3Iq1zZO6mH5mY7mHABjHmALjlfqzuRIDcPpIvUdRDvYuAZRbrlZmJqdeI1XudgXZss0xfP+hyDl/IQcuo5p716pAAi+7KqciUwkkjeYsa9v7gKOUiE/fkCF6hPx41BL64ScrcKNNqm0RJYuYfDek7ehkJXFwwzwKr2LeVxbWLm144Z3RHoJA8Q8yknVLEXsVUzhU+T4JC2fPwMK+6PdHllH46s/KlbsgHAAAgJAG/gogUKPtjL5jvRuGHeH2Opccq6x1aXuephJncLQE1gZDzDABiaU8N3ZmLrPhfX/AYp2hIKQjp+9wAAAABJRU5ErkJggg==" } }; if (window.OpenWithManager) { window.OpenWithManager.destroy(); delete window.OpenWithManager; } function $(id) { return document.getElementById(id); } window.OpenWithManager = { useMenu: false, getTypeDesc: function (type) { switch (type) { case "page": return "本页"; case "link": return "链接"; //case "tab": return "标签"; //case "bm": return "书签"; } return ""; }, buildMenuName: function (label, type) { return "用 " + label + " 打开" + this.getTypeDesc(type); }, attachNode: function (anchorNode, node) { if (this.useMenu) { anchorNode.appendChild(node); } else { anchorNode.parentNode.insertBefore(node, anchorNode); } }, createMenuPopup: function (anchorNode, type) { let menu = document.createXULElement("menu"); menu.setAttribute("label", MENU_NAME); menu.setAttribute("id", "openwith-menu-" + type); menu.setAttribute("class", "menu-iconic openwith-menu open-" + type); menu.setAttribute("image", browsers.all.image); anchorNode.parentNode.insertBefore(menu, anchorNode); let popup = document.createXULElement("menupopup"); popup.id = "openwith-popup-" + type; menu.appendChild(popup); return popup; }, createMenuItem: function (anchorNode, id, browser, type) { let menuitem = document.createXULElement("menuitem"); menuitem.id = "openwith-m-" + type + "-" + id; menuitem.setAttribute("label", this.buildMenuName(browser.name, type)); menuitem.setAttribute("oncommand", "OpenWithManager.openWithOtherBrowser(this,'" + id + "','" + type + "')"); menuitem.setAttribute("class", "menuitem-iconic openwith-menuitem open-" + type); if (browser.image) { menuitem.setAttribute("image", browser.image); } this.attachNode(anchorNode, menuitem); }, createBrowserMenu: function (anchorNode, type) { for (let key in browsers) { try { if (browsers[key].enable) { this.createMenuItem(anchorNode, key, browsers[key], type); } } catch (e) { alert(e.message); } } }, //contentAreaContextMenu initContentAreaMenu: function () { var inspos = $("inspect-separator"); let sep = document.createXULElement("menuseparator"); sep.setAttribute("class", "openwith-menuitem"); inspos.parentNode.insertBefore(sep, inspos); this.useMenu = USE_MENU_AREA; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(inspos, "area"); } else { anchorNode = inspos; } //链接部分 this.createBrowserMenu(anchorNode, "link"); let sepLink = document.createXULElement("menuseparator"); sepLink.setAttribute("class", "open-link openwith-menuitem"); this.attachNode(anchorNode, sepLink); //控制链接菜单的显示 inspos.parentNode.addEventListener("popupshowing", this, false); //页面部分 this.createBrowserMenu(anchorNode, "page"); }, //tabContextMenu initTabContextMenu: function () { var inspos = $("context_closeTabOptions") || $("context_closeTabOptions") let sep = document.createXULElement("menuseparator"); sep.setAttribute("class", "openwith-menuitem"); inspos.parentNode.insertBefore(sep, inspos.nextSibling); this.useMenu = USE_MENU_TAB; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(sep.nextSibling, "tab"); } else { anchorNode = sep.nextSibling; } this.createBrowserMenu(anchorNode, "tab"); }, //placesContext initPlacesContextMenu: function () { var inspos = $("placesContext_openSeparator"); //let sep = document.createXULElement("menuseparator"); //inspos.parentNode.insertBefore(sep, inspos); this.useMenu = USE_MENU_PLACE; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(inspos, "place"); } else { anchorNode = inspos; } this.createBrowserMenu(anchorNode, "place"); //文件夹显示 inspos.parentNode.addEventListener("popupshowing",this, false); }, handleEvent: function (event) { if(event.target.id=="placesContext"){ var isFloder = false; try { let selectedNode = PlacesUIUtils.getViewForNode(event.target.ownerDocument.popupNode).selectedNode; isFloder = !selectedNode || selectedNode.hasChildren; } catch (e) { } let menus = $("placesContext").querySelectorAll(".open-place"); for (let menu of menus) { if (isFloder) { menu.hidden = true; } else { menu.hidden = false; menu.disabled = false; } } } if(event.target.id=="contentAreaContextMenu"){ let menus = $("contentAreaContextMenu").querySelectorAll(".open-link"); for (let menu of menus) { if (gContextMenu.onLink) { menu.hidden = false; } else { menu.hidden = true; } } } }, init: function () { //contentAreaContextMenu this.initContentAreaMenu(); //tabContextMenu this.initTabContextMenu(); //placesContext this.initPlacesContextMenu(); }, destroy:function () { $("contentAreaContextMenu").removeEventListener("popupshowing", this, false); $("placesContext_openSeparator").removeEventListener("popupshowing", this, false); let menus = document.querySelectorAll(".openwith-menu"), menuitems = document.querySelectorAll(".openwith-menuitem"); for(let menuitem of menuitems){ menuitem.parentNode.removeChild(menuitem); } for(let menu of menus){ menu.parentNode.removeChild(menu); } }, openWithBrowser: function (url, path) { if (!path) { alert("浏览器路径未设置 "); return; } if (path == "microsoft-edge") { //edge用url打开 var cmdUrl = path + ":" + url; let win = window.openDialog(cmdUrl, "", "chrome"); win.close(); return; } let clientApp = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); clientApp.initWithPath(path); if (!clientApp.exists()) { alert("浏览器路径错误: " + path); return; } try { let ss = Cc["@mozilla.org/browser/shell-service;1"] .getService(Ci.nsIShellService); ss.openApplicationWithURI(clientApp, url); } catch (e) { let p = Cc["@mozilla.org/process/util;1"] .createInstance(Ci.nsIProcess); p.init(clientApp); p.run(false, [url], 1); } }, openWithOtherBrowser : function (obj, id, type) { var url; switch (type) { case "page": url = gBrowser.currentURI.spec; break; case "link": url = gContextMenu.linkURL; break; case "tab": { let tab = TabContextMenu.contextTab; let bw = tab && tab.linkedBrowser; url = bw && bw.currentURI.spec; } break; case "place": url = PlacesUIUtils.getViewForNode(PlacesUIUtils.lastContextMenuTriggerNode).selectedNode.uri; break; } if (url) { if (id == "all") { for (let key in browsers) { let browser = browsers[key]; if (browser.enable && key != "all" && browser.path) { this.openWithBrowser(url, browser.path); } } } else { let browser = browsers[id]; this.openWithBrowser(url, browser.path); } } } }; OpenWithManager.init(); })(); |
|
1楼#
发布于:2025-02-05 09:36
Mapping out compatibilityI thought through the compatibility issues with Firefox 136.0a1, noting that older XUL methods like "document.createXULElement" are deprecated. This script needs adapting or updating for the latest Firefox. Updating XUL elementsI’m moving forward with replacing deprecated XUL methods with "document.createElementNS" for Firefox 136.0a1, ensuring tags like "menu", "menupopup", and "menuitem" align with the XUL namespace. Addressing global objectsI'm considering updating gContextMenu references to "gBrowser.selectedBrowser" in the script. This adjustment is crucial to ensure compatibility with the latest Firefox updates. Confirming compatibilityChecking that gContextMenu and gBrowser.currentURI.spec function as expected in Firefox 136.0a1. Also, I’m thinking about the existence and potential changes to "placesContext" and other element IDs. Analyzing context menu changesOK, let me see. I’m gathering info on the availability of "contentAreaContextMenu" and "placesContext" in Firefox 136, considering updates to tab context menus like "context_closeTabOptions." Tracking menu ID shiftsOK, let me see. If "context_closeTabOptions" is outdated in Firefox 136, updating the script to use "tabContextMenu" seems crucial for maintaining compatibility. Tracking ID changesI'm looking into tab context menu IDs to ensure compatibility. In Firefox, element IDs like "context_closeTabOptions" are updated, so "tabContextMenu" might be the current identifier to use. Transitioning to "tabContextMenu"OK, attaching the separator to "tabContextMenu" instead of "context_closeTabOptions" in Firefox 136. This aligns better with the recent ID changes. Upgrading element creationI'm noting the switch to document.createElementNS for defining XUL elements. This change should streamline element creation throughout the codebase. Maintaining contextI’m noting that "Cc" and "Ci" are likely legacy definitions from Components.classes and Components.interfaces. Their use in Chrome context scripts should remain stable, but we'll keep an eye on their status. Advancing the scriptI’m wrapping up the script by defining createXULElement and updating all document.createXULElement calls to maintain XUL element creation. This introduces tabContextMenu updates. 下面给出一个修正后的脚本版本,主要修改内容是将所有对 document.createXULElement(...) |
|
|
2楼#
发布于:2025-02-05 09:36
的调用替换为使用 XUL 命名空间创建元素的方法,同时针对新版 Firefox(136+)的标签右键菜单做了适配(原来用 “context_closeTabOptions” 的做法可能已失效,现在改为直接在 “tabContextMenu” 内追加菜单项)。
请将下面代码保存为 OpenWith.uc.js 并在 Firefox 的 userChrome.js 配置中加载使用: |
|
|
3楼#
发布于:2025-02-05 09:37
// ==UserScript== // [url=home.php?mod=space&uid=467097]@Name[/url] OpenWith.uc.js // @description 用其他浏览器打开页面、链接、书签及标签 // [url=home.php?mod=space&uid=321866]@author[/url] ding // [url=home.php?mod=space&uid=713796]@include[/url] main // [url=home.php?mod=space&uid=570682]@version[/url] 2018.2.3.1 (修正新版Firefox) // @homepageURL https://bbs.kafan.cn/thread-2114879-1-1.html // @startup window.OpenWithManager.init(); // [url=home.php?mod=space&uid=748274]@Shutdown[/url] window.OpenWithManager.destroy(); // [url=home.php?mod=space&uid=356229]@Note[/url] 适配Firefox57+及136+ location.href.startsWith('chrome://browser/content/browser.x') && (function () { const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; // 用于创建 XUL 元素 function createXULElement(tag) { return document.createElementNS(XUL_NS, tag); } const MENU_NAME = "用其它浏览器打开"; // 是否使用二级菜单 const USE_MENU_AREA = true; // 页面 const USE_MENU_TAB = false; // 标签(新版下直接追加到 tabContextMenu 中,建议关闭二级菜单) const USE_MENU_PLACE = false; // 书签 function getFirefoxPath(){ // firefox.exe 所在路径 return OS.Constants.Path.libDir; } function getRootPath() { // firefox 所在盘路径 var path = getFirefoxPath(); var index = path.indexOf(":"); return path.substring(0,index+1); } // 修改内容后请将脚本改名来保证加载的是最新版本,或使用无缓存的 userChrome.js var browsers = { Edge: { enable: true, name: "Edge", path: "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe", image: "data:image/png;base64,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" }, Chrome: { enable: true, name: "Chrome", path: "D:\\GoogleChromePortable64\\GoogleChromePortable.exe", image: "data:image/png;base64,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" }, Slimjet: { enable: true, name: "Slimjet", path: "D:\\Slimjet\\slimjet.exe", image: "data:image/png;base64,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" }, FireFox: { enable: true, name: "Firefox Nightly", path: "D:\\FirefoxNightly\\FirefoxPortable.exe", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAE5ElEQVRIx8WVW4hd5RXHf+vb93Oby5nO5FJlopKQ4qVSpQk+zB4otZVWBUHwTQRHEAVBCvWlM2OhUOhLoX2RFiuBgnlKKfUChTkVSm2tU1p0hIxOLibGZDKZOefsfc6+fd/Xh2OGBFuVltIFH+y1H9Zv/9f69n/BfxFPbP4s5n8Z7Y1nrZz8/mdC5IsUum/h+NIrb22CXx8dN2LPc725iwdW40A89roH5k/NLnQ+F3Dih0l87oyNn/pFcwkgOviDJe0GiwUehE3wGxA0IRpDPX8BO74GgCsh1dsPd77T2rv82/ua14Gca5O79z394o6XPfrlO47IpezwSpKXcTg5zYFvzOFMj5FeSsCLwA/hXo0VDTbCWAMz67Mfps3Z6tgLL/1bBc99833rReMM2y3SGThjr6BunuJ87xyrv34dwvFRi6ImzvMNdLQKVIC7W+P24q7lf9x559LVXF19+PPP83hfuY9a1MYJXUzg0JqZQQcOG385CaYCXYA1YAxyuYaUN4BtgA3BNMA0WHNPLz6zcTb+FGDjhLPoeBFGgfnkg7QDRkFwx1GmHvk2k/ffBjqHKsf8/jJ+MYtrG2BdsC5iQ7QOODG8sHgd4PXHirjqqxjACqAs1hn1zwiI69C8+UbGboygzKAYYN7uYlYHBMmteGYMMXVE1xA8zpbmegW9dXZfiB1VFT3K3QrGVcLmseOc+vErUA6gSKFIKY+to9/s0+reTrP6EqgmYiaQssb03z5Y2gU09tk5AEcsyoCqQGkwSYoZZBTv/Z3k3XXQ5ScKEij6UA3JX36L9GKdsL+fMN2DlC3EROy/YOa4On6bEysskgvKgKOFjdNrdMOStReOUwU+VNVIktGjQZcZKBerS6qts/QHB2nfNKDv9EkpuNy18S7Ac8yoHVpwCyiHORJETLRmGJ/ay/bFj/AVVGWOqYrRbRIHlANG4+oulR9gtyva/hjF2A7SHP1iLsDwvFp2sYu6snj5CDIdTaH9kCMPLrD+zgrbvSv4X5mlaIZcevOvpCfPQ6lRtiJqNrETMEhrtMmYSEL2RnD2KiCYMJTbispaggwmagGFdsgKRR4Kh77+LQZNGNagGxaE4zVOvfsrjAhSd5g8eJhhagGIcqFdKFJXlncVtI+WneJVtVhZIciFYAiTgUviWrYG2+TnN9F1h+2dM1z40xvkSUZDORhdMfnw/TQyD7VjQStqmeAoj3umTeeda63itbnBSpp78QCHPID+uJC0IGlZVtd+w+mTf0RZhwILIpjIZ+Kh79I6cheVGIrS4hQw0xcilXZeXhib51oT8Rvlsi6cuLKCFIIdgBXBivC1ww9wy23zXNp6n0QPoT1G7dAhTM3HbkMpCmMhGli8riY7N/zDvzS7lQd7K/2PgzjFpRQhb0CvIQzrMKxDFlqKuqUIRnaS+QqrQItFtCUcCnma8dVb9Pz3Hh/Z9qcWzqv39FYyHcYZDqUIRc2S1BR5bTTkIoAyMhSuYF2LVmCt4GiIlMGImf/Jj/zOZ2603917ZaXsNuIcRYGi9KCKIKkJZQCFD8aByht5lzGaoJ51Fn/amP/CK/PE0X7sNNXKoBdgEEoRSg9MYMlcReVDX4ZsD7YYv6HbWfzlrfP/0U5+bWFzSffqc1lCnO/46EpBZAj3aC5v+st2/1bnyZemOvy/4p94BjsVGJyURAAAAABJRU5ErkJggg==" }, others: { enable: false, name: "", path: "", image: "" }, all: { enable: true, name: "所有浏览器", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACjElEQVQ4T21TXUgUURT+zswuZZruTBRRFJHOvgRR0EMRCQkVQWUEai9WD+LWjtpDQfVQLRQYPUSFd0xSCMJ+pCIMC1+rh+itzMC964MIRRYzu2WitjsnZqZ1t637cOGce8937ved7xJKli5SawA0MfE+AJvAnAXoPYhfECsPbLNmsriEFgIxVaFR5i6AegIK+eBCo7cx4yII0uGqZpgrpr1ccPGmXKSF+C2BNpa+iMGvnCmjDgnKgpkiluxQiJrtLLajw5jzATQr2UOg1tJivyvQ7cSNePFZRCSPEWGbE4/GqFKkalTwGBGUUgAX6IWrXlZCuXL7uPGx+FyzkvdzrJwnTchOIpz9X/d8LsdoyJjGo3wcsVLtBD4NoJ90IYeZ2CZWvoD45D8aMEYc0yho0/NpiZadHgawFYRR0kXyiW1GDy3tGo+GFXfsj9qjv3LYqYa5VnHJdEyjLg+sCfmQyJ/KjD8FTcinjmkcRICcIaJQsXCRrmRtui36cgHAkhMErPVjxnefgm0ae7w4YqWOKuyeADANoueuqz5Ot62fKKali5Rnsn4CVAa/I3+ECt3Iq1zZO6mH5mY7mHABjHmALjlfqzuRIDcPpIvUdRDvYuAZRbrlZmJqdeI1XudgXZss0xfP+hyDl/IQcuo5p716pAAi+7KqciUwkkjeYsa9v7gKOUiE/fkCF6hPx41BL64ScrcKNNqm0RJYuYfDek7ehkJXFwwzwKr2LeVxbWLm144Z3RHoJA8Q8yknVLEXsVUzhU+T4JC2fPwMK+6PdHllH46s/KlbsgHAAAgJAG/gogUKPtjL5jvRuGHeH2Opccq6x1aXuephJncLQE1gZDzDABiaU8N3ZmLrPhfX/AYp2hIKQjp+9wAAAABJRU5ErkJggg==" } }; // 如果已存在旧的实例,则先清理 if (window.OpenWithManager) { window.OpenWithManager.destroy(); delete window.OpenWithManager; } function $(id) { return document.getElementById(id); } window.OpenWithManager = { useMenu: false, getTypeDesc: function (type) { switch (type) { case "page": return "本页"; case "link": return "链接"; // case "tab": return "标签"; // case "bm": return "书签"; } return ""; }, buildMenuName: function (label, type) { return "用 " + label + " 打开" + this.getTypeDesc(type); }, attachNode: function (anchorNode, node) { if (this.useMenu) { anchorNode.appendChild(node); } else { anchorNode.parentNode.insertBefore(node, anchorNode); } }, createMenuPopup: function (anchorNode, type) { let menu = createXULElement("menu"); menu.setAttribute("label", MENU_NAME); menu.setAttribute("id", "openwith-menu-" + type); menu.setAttribute("class", "menu-iconic openwith-menu open-" + type); menu.setAttribute("image", browsers.all.image); anchorNode.parentNode.insertBefore(menu, anchorNode); let popup = createXULElement("menupopup"); popup.id = "openwith-popup-" + type; menu.appendChild(popup); return popup; }, createMenuItem: function (anchorNode, id, browser, type) { let menuitem = createXULElement("menuitem"); menuitem.id = "openwith-m-" + type + "-" + id; menuitem.setAttribute("label", this.buildMenuName(browser.name, type)); menuitem.setAttribute("oncommand", "OpenWithManager.openWithOtherBrowser(this, '" + id + "', '" + type + "')"); menuitem.setAttribute("class", "menuitem-iconic openwith-menuitem open-" + type); if (browser.image) { menuitem.setAttribute("image", browser.image); } this.attachNode(anchorNode, menuitem); }, createBrowserMenu: function (anchorNode, type) { for (let key in browsers) { try { if (browsers[key].enable) { this.createMenuItem(anchorNode, key, browsers[key], type); } } catch (e) { alert(e.message); } } }, // contentAreaContextMenu(页面右键菜单) initContentAreaMenu: function () { var inspos = $("inspect-separator"); let sep = createXULElement("menuseparator"); sep.setAttribute("class", "openwith-menuitem"); inspos.parentNode.insertBefore(sep, inspos); this.useMenu = USE_MENU_AREA; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(inspos, "area"); } else { anchorNode = inspos; } // 添加“链接”相关菜单项 this.createBrowserMenu(anchorNode, "link"); let sepLink = createXULElement("menuseparator"); sepLink.setAttribute("class", "open-link openwith-menuitem"); this.attachNode(anchorNode, sepLink); // 根据当前右键环境控制链接菜单显示 inspos.parentNode.addEventListener("popupshowing", this, false); // 添加“本页”菜单项 this.createBrowserMenu(anchorNode, "page"); }, // tabContextMenu(标签右键菜单) initTabContextMenu: function () { // 在新版 Firefox 下,标签右键菜单的 id 为 "tabContextMenu" var tabContext = $("tabContextMenu"); if (!tabContext) { return; } let sep = createXULElement("menuseparator"); sep.setAttribute("class", "openwith-menuitem"); // 直接追加到菜单末尾 tabContext.appendChild(sep); this.useMenu = USE_MENU_TAB; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(sep, "tab"); } else { anchorNode = sep; } this.createBrowserMenu(anchorNode, "tab"); }, // placesContext(书签/历史右键菜单) initPlacesContextMenu: function () { var inspos = $("placesContext_openSeparator"); if (!inspos) { return; } this.useMenu = USE_MENU_PLACE; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(inspos, "place"); } else { anchorNode = inspos; } this.createBrowserMenu(anchorNode, "place"); // 针对文件夹项控制显示 inspos.parentNode.addEventListener("popupshowing", this, false); }, handleEvent: function (event) { if (event.target.id == "placesContext") { var isFolder = false; try { let selectedNode = PlacesUIUtils.getViewForNode(event.target.ownerDocument.popupNode).selectedNode; isFolder = !selectedNode || selectedNode.hasChildren; } catch (e) { } let menus = $("placesContext").querySelectorAll(".open-place"); for (let menu of menus) { menu.hidden = isFolder; if (!isFolder) { menu.disabled = false; } } } if (event.target.id == "contentAreaContextMenu") { let menus = $("contentAreaContextMenu").querySelectorAll(".open-link"); for (let menu of menus) { menu.hidden = !gContextMenu.onLink; } } }, init: function () { // 初始化页面右键菜单 this.initContentAreaMenu(); // 初始化标签右键菜单 this.initTabContextMenu(); // 初始化书签/历史右键菜单 this.initPlacesContextMenu(); }, destroy: function () { $("contentAreaContextMenu").removeEventListener("popupshowing", this, false); let placesSep = $("placesContext_openSeparator"); if (placesSep) placesSep.removeEventListener("popupshowing", this, false); let menus = document.querySelectorAll(".openwith-menu"), menuitems = document.querySelectorAll(".openwith-menuitem"); for (let menuitem of menuitems) { if (menuitem.parentNode) menuitem.parentNode.removeChild(menuitem); } for (let menu of menus) { if (menu.parentNode) menu.parentNode.removeChild(menu); } }, openWithBrowser: function (url, path) { if (!path) { alert("浏览器路径未设置"); return; } if (path == "microsoft-edge") { // Edge 使用 URL 打开 var cmdUrl = path + ":" + url; let win = window.openDialog(cmdUrl, "", "chrome"); win.close(); return; } let clientApp = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); clientApp.initWithPath(path); if (!clientApp.exists()) { alert("浏览器路径错误: " + path); return; } try { let ss = Cc["@mozilla.org/browser/shell-service;1"] .getService(Ci.nsIShellService); ss.openApplicationWithURI(clientApp, url); } catch (e) { let p = Cc["@mozilla.org/process/util;1"] .createInstance(Ci.nsIProcess); p.init(clientApp); p.run(false, [url], 1); } }, openWithOtherBrowser: function (obj, id, type) { var url; switch (type) { case "page": url = gBrowser.currentURI.spec; break; case "link": url = gContextMenu.linkURL; break; case "tab": { let tab = TabContextMenu.contextTab; let bw = tab && tab.linkedBrowser; url = bw && bw.currentURI.spec; } break; case "place": url = PlacesUIUtils.getViewForNode(PlacesUIUtils.lastContextMenuTriggerNode).selectedNode.uri; break; } if (url) { if (id == "all") { for (let key in browsers) { let browser = browsers[key]; if (browser.enable && key != "all" && browser.path) { this.openWithBrowser(url, browser.path); } } } else { let browser = browsers[id]; this.openWithBrowser(url, browser.path); } } } }; OpenWithManager.init(); })(); |
|
|
4楼#
发布于:2025-02-05 09:41
说明
XUL 元素创建 为了适应 Firefox 136 及以后的版本,原脚本中直接调用 document.createXULElement 的方式已不可用,故增加了辅助函数 createXULElement(tag),该函数通过命名空间 http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul 创建 XUL 元素。 标签右键菜单适配 原脚本中查找 “context_closeTabOptions” 已不适用,新版本中标签右键菜单的容器 id 为 tabContextMenu,故在 initTabContextMenu() 中做了相应调整(你也可以根据需要调整是否使用二级菜单)。 其他部分 其他部分大体保持不变,仅做了少量兼容性处理。若仍有部分失效,请检查当前 Firefox UI 结构是否有进一步调整,可通过“检查元素”工具确认对应 id 和结构。 保存并重启 Firefox 后,即可在页面、链接、标签及书签右键菜单中看到“用其它浏览器打开”的相关菜单项。 |
|
|
5楼#
发布于:2025-02-05 12:06
已修复,可以正常使用
// ==UserScript== // @name OpenWith.uc.js // @description 用其他浏览器打开页面、链接、书签及标签 // @author ding // @include main // @version 2018.2.3.1 // @homepageURL https://bbs.kafan.cn/thread-2114879-1-1.html // @startup window.OpenWithManager.init(); // @shutdown window.OpenWithManager.destroy(); // @note 适配Firefox57+ // ==/UserScript== location.href.startsWith('chrome://browser/content/browser.x') && (function () { const MENU_NAME = "用其它浏览器打开"; //是否使用二级菜单 const USE_MENU_AREA = true; //页面 const USE_MENU_TAB = false; //标签 const USE_MENU_PLACE = false; //书签 function getFirefoxPath(){//firefox.exe所在路径 return OS.Constants.Path.libDir; } function getRootPath() {//firefox所在盘路径 var path = getFirefoxPath(); var index = path.indexOf(":"); return path.substring(0,index+1); } //修改内容后请将脚本改名来保证加载的是最新,或使用无缓存的userChrome.js var browsers = { Edge: { enable: true, name: "Edge", path: "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe", image: "data:image/png;base64,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" }, Chrome: { enable: true, name: "Chrome", path: "D:\\GoogleChromePortable64\\GoogleChromePortable.exe", image: "data:image/png;base64,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" }, Slimjet: { enable: true, name: "Slimjet", path: "D:\\Slimjet\\slimjet.exe", image: "data:image/png;base64,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" }, FireFox: { enable: true, name: "Firefox Nightly", path: "D:\\FirefoxNightly\\FirefoxPortable.exe", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAE5ElEQVRIx8WVW4hd5RXHf+vb93Oby5nO5FJlopKQ4qVSpQk+zB4otZVWBUHwTQRHEAVBCvWlM2OhUOhLoX2RFiuBgnlKKfUChTkVSm2tU1p0hIxOLibGZDKZOefsfc6+fd/Xh2OGBFuVltIFH+y1H9Zv/9f69n/BfxFPbP4s5n8Z7Y1nrZz8/mdC5IsUum/h+NIrb22CXx8dN2LPc725iwdW40A89roH5k/NLnQ+F3Dih0l87oyNn/pFcwkgOviDJe0GiwUehE3wGxA0IRpDPX8BO74GgCsh1dsPd77T2rv82/ua14Gca5O79z394o6XPfrlO47IpezwSpKXcTg5zYFvzOFMj5FeSsCLwA/hXo0VDTbCWAMz67Mfps3Z6tgLL/1bBc99833rReMM2y3SGThjr6BunuJ87xyrv34dwvFRi6ImzvMNdLQKVIC7W+P24q7lf9x559LVXF19+PPP83hfuY9a1MYJXUzg0JqZQQcOG385CaYCXYA1YAxyuYaUN4BtgA3BNMA0WHNPLz6zcTb+FGDjhLPoeBFGgfnkg7QDRkFwx1GmHvk2k/ffBjqHKsf8/jJ+MYtrG2BdsC5iQ7QOODG8sHgd4PXHirjqqxjACqAs1hn1zwiI69C8+UbGboygzKAYYN7uYlYHBMmteGYMMXVE1xA8zpbmegW9dXZfiB1VFT3K3QrGVcLmseOc+vErUA6gSKFIKY+to9/s0+reTrP6EqgmYiaQssb03z5Y2gU09tk5AEcsyoCqQGkwSYoZZBTv/Z3k3XXQ5ScKEij6UA3JX36L9GKdsL+fMN2DlC3EROy/YOa4On6bEysskgvKgKOFjdNrdMOStReOUwU+VNVIktGjQZcZKBerS6qts/QHB2nfNKDv9EkpuNy18S7Ac8yoHVpwCyiHORJETLRmGJ/ay/bFj/AVVGWOqYrRbRIHlANG4+oulR9gtyva/hjF2A7SHP1iLsDwvFp2sYu6snj5CDIdTaH9kCMPLrD+zgrbvSv4X5mlaIZcevOvpCfPQ6lRtiJqNrETMEhrtMmYSEL2RnD2KiCYMJTbispaggwmagGFdsgKRR4Kh77+LQZNGNagGxaE4zVOvfsrjAhSd5g8eJhhagGIcqFdKFJXlncVtI+WneJVtVhZIciFYAiTgUviWrYG2+TnN9F1h+2dM1z40xvkSUZDORhdMfnw/TQyD7VjQStqmeAoj3umTeeda63itbnBSpp78QCHPID+uJC0IGlZVtd+w+mTf0RZhwILIpjIZ+Kh79I6cheVGIrS4hQw0xcilXZeXhib51oT8Rvlsi6cuLKCFIIdgBXBivC1ww9wy23zXNp6n0QPoT1G7dAhTM3HbkMpCmMhGli8riY7N/zDvzS7lQd7K/2PgzjFpRQhb0CvIQzrMKxDFlqKuqUIRnaS+QqrQItFtCUcCnma8dVb9Pz3Hh/Z9qcWzqv39FYyHcYZDqUIRc2S1BR5bTTkIoAyMhSuYF2LVmCt4GiIlMGImf/Jj/zOZ2603917ZaXsNuIcRYGi9KCKIKkJZQCFD8aByht5lzGaoJ51Fn/amP/CK/PE0X7sNNXKoBdgEEoRSg9MYMlcReVDX4ZsD7YYv6HbWfzlrfP/0U5+bWFzSffqc1lCnO/46EpBZAj3aC5v+st2/1bnyZemOvy/4p94BjsVGJyURAAAAABJRU5ErkJggg==" }, others: { enable: false, name: "", path: "", image: "" }, all: { enable: true, name: "所有浏览器", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACjElEQVQ4T21TXUgUURT+zswuZZruTBRRFJHOvgRR0EMRCQkVQWUEai9WD+LWjtpDQfVQLRQYPUSFd0xSCMJ+pCIMC1+rh+itzMC964MIRRYzu2WitjsnZqZ1t637cOGce8937ved7xJKli5SawA0MfE+AJvAnAXoPYhfECsPbLNmsriEFgIxVaFR5i6AegIK+eBCo7cx4yII0uGqZpgrpr1ccPGmXKSF+C2BNpa+iMGvnCmjDgnKgpkiluxQiJrtLLajw5jzATQr2UOg1tJivyvQ7cSNePFZRCSPEWGbE4/GqFKkalTwGBGUUgAX6IWrXlZCuXL7uPGx+FyzkvdzrJwnTchOIpz9X/d8LsdoyJjGo3wcsVLtBD4NoJ90IYeZ2CZWvoD45D8aMEYc0yho0/NpiZadHgawFYRR0kXyiW1GDy3tGo+GFXfsj9qjv3LYqYa5VnHJdEyjLg+sCfmQyJ/KjD8FTcinjmkcRICcIaJQsXCRrmRtui36cgHAkhMErPVjxnefgm0ae7w4YqWOKuyeADANoueuqz5Ot62fKKali5Rnsn4CVAa/I3+ECt3Iq1zZO6mH5mY7mHABjHmALjlfqzuRIDcPpIvUdRDvYuAZRbrlZmJqdeI1XudgXZss0xfP+hyDl/IQcuo5p716pAAi+7KqciUwkkjeYsa9v7gKOUiE/fkCF6hPx41BL64ScrcKNNqm0RJYuYfDek7ehkJXFwwzwKr2LeVxbWLm144Z3RHoJA8Q8yknVLEXsVUzhU+T4JC2fPwMK+6PdHllH46s/KlbsgHAAAgJAG/gogUKPtjL5jvRuGHeH2Opccq6x1aXuephJncLQE1gZDzDABiaU8N3ZmLrPhfX/AYp2hIKQjp+9wAAAABJRU5ErkJggg==" } }; if (window.OpenWithManager) { window.OpenWithManager.destroy(); delete window.OpenWithManager; } function $(id) { return document.getElementById(id); } window.OpenWithManager = { useMenu: false, getTypeDesc: function (type) { switch (type) { case "page": return "本页"; case "link": return "链接"; //case "tab": return "标签"; //case "bm": return "书签"; } return ""; }, buildMenuName: function (label, type) { return "用 " + label + " 打开" + this.getTypeDesc(type); }, attachNode: function (anchorNode, node) { if (this.useMenu) { anchorNode.appendChild(node); } else { anchorNode.parentNode.insertBefore(node, anchorNode); } }, createMenuPopup: function (anchorNode, type) { let menu = document.createXULElement("menu"); menu.setAttribute("label", MENU_NAME); menu.setAttribute("id", "openwith-menu-" + type); menu.setAttribute("class", "menu-iconic openwith-menu open-" + type); menu.setAttribute("image", browsers.all.image); anchorNode.parentNode.insertBefore(menu, anchorNode); let popup = document.createXULElement("menupopup"); popup.id = "openwith-popup-" + type; menu.appendChild(popup); return popup; }, createMenuItem: function (anchorNode, id, browser, type) { let menuitem = document.createXULElement("menuitem"); menuitem.id = "openwith-m-" + type + "-" + id; menuitem.setAttribute("label", this.buildMenuName(browser.name, type)); menuitem.addEventListener("command", function() { OpenWithManager.openWithOtherBrowser(this, id, type); }); menuitem.setAttribute("class", "menuitem-iconic openwith-menuitem open-" + type); if (browser.image) { menuitem.setAttribute("image", browser.image); } this.attachNode(anchorNode, menuitem); }, createBrowserMenu: function (anchorNode, type) { for (let key in browsers) { try { if (browsers[key].enable) { this.createMenuItem(anchorNode, key, browsers[key], type); } } catch (e) { alert(e.message); } } }, //contentAreaContextMenu initContentAreaMenu: function () { var inspos = $("inspect-separator"); let sep = document.createXULElement("menuseparator"); sep.setAttribute("class", "openwith-menuitem"); inspos.parentNode.insertBefore(sep, inspos); this.useMenu = USE_MENU_AREA; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(inspos, "area"); } else { anchorNode = inspos; } //链接部分 this.createBrowserMenu(anchorNode, "link"); let sepLink = document.createXULElement("menuseparator"); sepLink.setAttribute("class", "open-link openwith-menuitem"); this.attachNode(anchorNode, sepLink); //控制链接菜单的显示 inspos.parentNode.addEventListener("popupshowing", this, false); //页面部分 this.createBrowserMenu(anchorNode, "page"); }, //tabContextMenu initTabContextMenu: function () { var inspos = $("context_closeTabOptions") || $("context_closeTabOptions") let sep = document.createXULElement("menuseparator"); sep.setAttribute("class", "openwith-menuitem"); inspos.parentNode.insertBefore(sep, inspos.nextSibling); this.useMenu = USE_MENU_TAB; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(sep.nextSibling, "tab"); } else { anchorNode = sep.nextSibling; } this.createBrowserMenu(anchorNode, "tab"); }, //placesContext initPlacesContextMenu: function () { var inspos = $("placesContext_openSeparator"); //let sep = document.createXULElement("menuseparator"); //inspos.parentNode.insertBefore(sep, inspos); this.useMenu = USE_MENU_PLACE; var anchorNode; if (this.useMenu) { anchorNode = this.createMenuPopup(inspos, "place"); } else { anchorNode = inspos; } this.createBrowserMenu(anchorNode, "place"); //文件夹显示 inspos.parentNode.addEventListener("popupshowing",this, false); }, handleEvent: function (event) { if(event.target.id=="placesContext"){ var isFloder = false; try { let selectedNode = PlacesUIUtils.getViewForNode(event.target.ownerDocument.popupNode).selectedNode; isFloder = !selectedNode || selectedNode.hasChildren; } catch (e) { } let menus = $("placesContext").querySelectorAll(".open-place"); for (let menu of menus) { if (isFloder) { menu.hidden = true; } else { menu.hidden = false; menu.disabled = false; } } } if(event.target.id=="contentAreaContextMenu"){ let menus = $("contentAreaContextMenu").querySelectorAll(".open-link"); for (let menu of menus) { if (gContextMenu.onLink) { menu.hidden = false; } else { menu.hidden = true; } } } }, init: function () { //contentAreaContextMenu this.initContentAreaMenu(); //tabContextMenu this.initTabContextMenu(); //placesContext this.initPlacesContextMenu(); }, destroy:function () { $("contentAreaContextMenu").removeEventListener("popupshowing", this, false); $("placesContext_openSeparator").removeEventListener("popupshowing", this, false); let menus = document.querySelectorAll(".openwith-menu"), menuitems = document.querySelectorAll(".openwith-menuitem"); for(let menuitem of menuitems){ menuitem.parentNode.removeChild(menuitem); } for(let menu of menus){ menu.parentNode.removeChild(menu); } }, openWithBrowser: function (url, path) { if (!path) { alert("浏览器路径未设置 "); return; } if (path == "microsoft-edge") { //edge用url打开 var cmdUrl = path + ":" + url; let win = window.openDialog(cmdUrl, "", "chrome"); win.close(); return; } let clientApp = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); clientApp.initWithPath(path); if (!clientApp.exists()) { alert("浏览器路径错误: " + path); return; } try { let ss = Cc["@mozilla.org/browser/shell-service;1"] .getService(Ci.nsIShellService); ss.openApplicationWithURI(clientApp, url); } catch (e) { let p = Cc["@mozilla.org/process/util;1"] .createInstance(Ci.nsIProcess); p.init(clientApp); p.run(false, [url], 1); } }, openWithOtherBrowser : function (obj, id, type) { var url; switch (type) { case "page": url = gBrowser.currentURI.spec; break; case "link": url = gContextMenu.linkURL; break; case "tab": { let tab = TabContextMenu.contextTab; let bw = tab && tab.linkedBrowser; url = bw && bw.currentURI.spec; } break; case "place": url = PlacesUIUtils.getViewForNode(PlacesUIUtils.lastContextMenuTriggerNode).selectedNode.uri; break; } if (url) { if (id == "all") { for (let key in browsers) { let browser = browsers[key]; if (browser.enable && key != "all" && browser.path) { this.openWithBrowser(url, browser.path); } } } else { let browser = browsers[id]; this.openWithBrowser(url, browser.path); } } } }; OpenWithManager.init(); })(); |
|