teruimisu
小狐狸
小狐狸
  • UID57823
  • 注册日期2020-07-02
  • 最后登录2023-08-18
  • 发帖数22
  • 经验34枚
  • 威望0点
  • 贡献值40点
  • 好评度1点
  • 社区居民
阅读:1449回复:2

求大神修复两个UC脚本ExternalAppShotcut.uc[已解决]

楼主#
更多 发布于:2020-07-02 12:51
调用外部命令ExternalAppShotcut.uc.js和替换新标签页NewTabOverridec.uc.js脚本更新到78ESR后失效,求大神出手修复一下
ExternalAppShotcut.uc.rar
// ==UserScript==
// @name           ExternalAppShotcut.uc.js
// @description    调用外部命令
// @author         ding
// @include        main
// @version        2018.2.3.1
// @startup        window.ExternalAppShotcut.init();
// @shutdown       window.ExternalAppShotcut.destroy();
// ==/UserScript==
location == "chrome://browser/content/browser.xul" && (function () {
    const MENU_NAME = "快捷命令";
    const MENU_IMAGE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAByElEQVRYhe3WEXhbURQH8B8ECoVCoBAYDALDQSAQDAwKgWBhMCgMAoNBv68wKAwGhcJgUCgUCsXBIFAYFAeBwCBQCAQGHZyTbV++Zulr8h71/30P3n333P//3PM/912eUC26OMN5laQNHGKEO/zC17JJa+jhKgnHOEInRfTLIm7iGJMkvsCrFETsxARbmyTdxmsMRXY/8A6798wd49OmiFs4xRQzYa7Of+Z3U+CLdUjrGOAmF7vBAXYeEHuO68cSd3OBmcj4BC8LxNcz9k0R0mfCNGOR7RD7ouZFMRDCV8ZuiRa5StKJcPVadROl+rxq0tskvEsBfZtpl1au2Vo18Qi3Ofk7PghXryviROzAg1BDO8Vcp5gpLoXbnxck3874QcG4P9gVxvvib3lGIqs9q021L9xff6yARbREZ8xPvanolmUYKvHPV08By3q7KUR2yxJAeONiybdjUa5ScSB2obYwXsNPUa5SMd/m9sJ4T/yOG2ULILb5cGHsMp9KcIpv/7w3RPa9qgT0k3B+JrwX9V/0RWnYET7Yy/eR6IBKMRSnYyfFNKsWcCjugmcquHLfh7bIfCbO/8pREwfSrQ1fuYvgo+iAJxTCb+fIa+Ncavm8AAAAAElFTkSuQmCC";
    var APPS = [
        {
            enable: true,
            name: "域名编辑",
            path: "C:\\Windows\\notepad.exe",
            param: "C:\\Windows\\System32\\drivers\\etc\\hosts",
            image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAC1JREFUCNdjAAL2BwwsCgysC4AkiM3YwMD/gYFDAITq6hicnBiiooAkkA1UCwC3Lwgg+P+xLwAAAABJRU5ErkJggg=="
        },
        {
            enable: true,
            name: "录像工具",
            path: "D:\\Album Files\\ZD Soft\\Screen Recorder\\ScnRec.exe",
            param: "",
            image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcklEQVQ4jd3SsQ2DMBBG4U9iAIagYQcKaiZhGpqswyDZwE2GMI1BVmQjFKRIyZOuu/9Zvjv+hgkBsVIh9ew0eOSCgOHkgSH1QIs1iQ/ie6JARIcnlk8FAXMpc0XwwljLXBXkc/r+FyJ6lSHeXuPtQ/phNpewMd4q2yEXAAAAAElFTkSuQmCC"
        },
        {
            enable: true,
            name: "截图工具",
            path: "D:\\Album Files\\FastStone Capture\\FSCapture.exe",
            param: "",
            image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAALVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBoCg+AAAADnRSTlMAmg3ixmUdzrOhUUM0JsS2ELwAAABRSURBVAjXY8AG+N69ewCimYAknwIDwzsoYHgAlQcymIQNFd6BGCxiiQ5gke0MDNVgRiADg2gCiHFYgcnmAojB6bVkAliKIaIVqB1uDsJkGAAAD7IjdT2iTdwAAAAASUVORK5CYII="
        },
        {
            enable: true,
            name: "画图工具",
            path: "C:\\Windows\\System32\\mspaint.exe",
            param: "",
            image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABfUlEQVQ4jX3SMWsVURAF4G8XfWCRiK3N4CuMGMRfYCkYBbsn2JqnYBHQUmyto2AQi2f8CSlEsAikeH8hJNqIU4iChUYL4VUWezds1pccWLh3ds7MnLmn0kNEXMYYK7hQwp/xAZPM3Ovm1x3iICI2sIMfuIOz5buLn9iJiNcRcablVS0Z73GA1cw8KPEpZOa1cl/EJs5hJTNn7QTPC3nUkjuo2kNm/saoTLMOVUQsYxtLZYrDjnP2My3HW/iI63VZ2KtS/UjHY1CV3JcYi4j9iLg6p9vTk6pExJWI2K8xLOP08SwiHp1Q4xOG3WecdjS2WI+IB73Obd4As1pjkkutvl6BChsRcXNOfIg8pXHY7eM2j9OY4DxHPPEE2zXe4GExSRffeh27MhaxhkmdmbvYwmZEdBPH+I6vWO2QK40btzJzt2/lX7iXmX/maYmIBbzVsXLV+TnQ2HOEF3ineaoBLmrct1amfZyZf//TVgot4z5uaDY9wxeN3SdF8iH+ARn3f9GCYlW0AAAAAElFTkSuQmCC"
        },
        {
            enable: false,
            name: "保留不删",
            path: "",
            param: "",
            image: ""
        }
    ];
    if (window.ExternalAppShotcut) {
        window.ExternalAppShotcut.destroy();
        delete window.ExternalAppShotcut;
    }
    var ExternalAppShotcut = {
        init: function () {
            let inspos = $("urlbar-container");
            let toolbarbutton = document.createElement("toolbarbutton");
            toolbarbutton.id = "shotcut-extapp"
            toolbarbutton.setAttribute("label", MENU_NAME);
            toolbarbutton.setAttribute("tooltiptext", MENU_NAME);
            toolbarbutton.setAttribute("removable", true);
            toolbarbutton.setAttribute("cui-areatype", "toolbar");
            toolbarbutton.setAttribute("type", "menu");
            toolbarbutton.setAttribute("class", "toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav");
            toolbarbutton.setAttribute("anchor", "dropmarker");
            toolbarbutton.setAttribute("image", MENU_IMAGE);
            inspos.parentNode.appendChild(toolbarbutton);
            let popup = document.createElement("menupopup");
            popup.id = "shotcut-extapp-popup";
            toolbarbutton.appendChild(popup);
            var len = APPS.length-1;
            var apps = 0;
            for (var i = 0; i < len; i++) {
                let app = APPS<span style="font-style: italic;">;
                if (app.enable) {
                    if(apps>0){
                        let sep = document.createElement("menuseparator");
                        sep.setAttribute("class", "shotcut-menu");
                        popup.appendChild(sep);
                    }
                    let menuitem = document.createElement("menuitem");
                    menuitem.id = "shotcut-extapp-menu" + i;
                    menuitem.setAttribute("label", app.name);
                    menuitem.setAttribute("oncommand", "ExternalAppShotcut.lancherApp(" + i + ")");
                    menuitem.setAttribute("class", "menuitem-iconic shotcut-menu");
                    if (app.image) {
                        menuitem.setAttribute("image", app.image);
                    }
                    popup.appendChild(menuitem);
                    apps++;
                }
            }
        },
        destroy: function () {
            let button = $("shotcut-extapp");
            if (button) {
                let menus = document.querySelectorAll(".shotcut-menu");
                for(let menuitem of menus){
                    menuitem.parentNode.removeChild(menuitem);
                }
                let pop = $("shotcut-extapp-popup");
                pop.parentNode.removeChild(pop);
                button.parentNode.removeChild(button);
            }
        },
        lancherApp:function (idx) {
            let app = APPS[idx];
            let clientApp = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
            clientApp.initWithPath(app.path);
            if (!clientApp.exists()) {
                alert("应用不存在: " + app.path);
                return;
            }
            try {
                let ss = Cc["@mozilla.org/browser/shell-service;1"]
                    .getService(Ci.nsIShellService);
                ss.openApplicationWithURI(clientApp, app.param);
            } catch (e) {
                let p = Cc["@mozilla.org/process/util;1"]
                    .createInstance(Ci.nsIProcess);
                p.init(clientApp);
                p.run(false, [app.param], 1);
            }
        }
          
    }
    ExternalAppShotcut.init();
    window.ExternalAppShotcut = ExternalAppShotcut;
    function $(id) {
        return document.getElementById(id);
    }
})();</span>


NewTabOverridec.uc.rar
// ==UserScript==
// @name           NewTabOverridec.uc.js
// @description    替换新标签页
// @version        2018.1.25.1
// @startup        window.AboutNewTabServiceFix.init();
// ==/UserScript==
(function () {
    if (location != 'chrome://browser/content/browser.xul')
        return;
    //设定第三方网址时注意斜杠,完全匹配时地址栏才不会显示地址
    //const newurl = "http://localhost/";
    const newurl ="file:///D:/Program%20Files/Mozilla/myNewTab/index.html";
    //const newurl ="https://www.baidu.com/"
    window.AboutNewTabServiceFix = {
        init: function () {
            //设定主页
            Services.prefs.setStringPref("browser.startup.homepage",newurl);
            aboutNewTabService.newTabURL = newurl;
        }
    }
    AboutNewTabServiceFix.init();
})();
  
    //页面右侧滚动滑轮,直接滚到页面顶端或底端
    (function(){
                if (location != 'chrome://browser/content/browser.xul')
            return;
        var content = document.getElementById("content-deck");
        content.addEventListener("DOMMouseScroll", function(e) {
                    if(e.clientX >document.documentElement.clientWidth-100){
                        if (e.detail>0)goDoCommand("cmd_scrollBottom");
                                else goDoCommand("cmd_scrollTop");
                        }
                })
        })();


ExternalAppShotcut.uc.js最好能修复,不胜感激

@lonely_8 @jiayiming
lonely_8
非常火狐
非常火狐
  • UID30273
  • 注册日期2009-09-03
  • 最后登录2022-08-09
  • 发帖数733
  • 经验469枚
  • 威望0点
  • 贡献值86点
  • 好评度147点
  • 社区居民
  • 忠实会员
1楼#
发布于:2020-07-02 18:45
两个脚本的
chrome://browser/content/browser.xul
都替换为
chrome://browser/content/browser.xhtml

脚本1
createElement 都替换为 createXULElement

脚本2:
aboutNewTabService 替换为 AboutNewTab
content-deck 替换为 tabbrowser-tabpanels
teruimisu
小狐狸
小狐狸
  • UID57823
  • 注册日期2020-07-02
  • 最后登录2023-08-18
  • 发帖数22
  • 经验34枚
  • 威望0点
  • 贡献值40点
  • 好评度1点
  • 社区居民
2楼#
发布于:2020-07-02 19:24
lonely_8:两个脚本的
chrome://browser/content/browser.xul
都替换为
chrome://browser/content/browser.xhtml

脚本1
createElement 都替换为 createXUL...
回到原帖
非常感谢大神,两个脚本都能使用
游客

返回顶部