Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Mozilla Firefox (часть 23)

Модерирует : gyra, Maz

Maz (14-06-2023 18:22): Mozilla Firefox (часть 24)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Yankell

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
// ==UserScript==
// @name            OpenWith
// @description        Fügt dem Kontextmenü ein Menü hinzu, zum Öffnen der aktuelle Seite und eines ausgewählten Links in einem anderen Browser.
// @description        und eines ausgewählten Links in einem anderen Browser.
// @version            1.2.1a  63+
// @author            y2k
// @include            main
// @charset            UTF-8
// @namespace        http://tabunfirefox.web.fc2.com/
// @note            Anwendungssymbol anzeigen
// @note            als .uc.js Script umgeschrieben
// ==/UserScript==
(function() {
"use strict";
/*
    Vor Verwendung, Pfad auf eigene Umgebung ändern(\ wird durch \\ ersetzt)
    Zum Übergeben von Argumenten, wie folgt vorgehen:
    C:\\Program Files\\Internet Explorer\\iexplore.exe<>$1 Argument Argument
    &#8251; $1 wird in URL umgewandelt
*/
 
 
 
const BrowserPath = {
    "Mypal68":        "H:\\Browsers\\mypal-68.12.4.en-US.win32\\mypal\\mypal.exe",
    "Iceweasel 101.0":        "E:\\Portable\\Browsers\\Iceweasel-v101.0.en_US_64\\App\\Iceweasel.exe",
    "Firefox 102.0esr":                "E:\\Portable\\Browsers\\Firefox Setup 102.0esr\\FirefoxPortable.exe",
    "Firefox 103.0.2":                "E:\\Portable\\Browsers\\Firefox Setup 103.0.2\\Firefox\\firefox.exe",
    "Firefox 105.0b5":                "H:\\Browsers\\Firefox dev 105.0b5\\core\\firefox.exe",
    "Floorp 10.3.0":              "E:\\Portable\\Browsers\\floorp-10.3.0win64\\Floorp\\Floorp.exe",
    "catsxp 103.2.7.3.2":             "E:\\Portable\\Browsers\\catsxp_portable_x64_beta_103_2_7_3_2\\catsxp.exe",
    "CentBrowser 5.0":               "E:\\Portable\\Browsers\\CentBrowser 5.0\\X-Cent.exe",
    "Waterfox G3.2.6":           "E:\\Portable\\Browsers\\Waterfox G3.2.6 Setup\\Waterfox\\Waterfox.exe",  
    "Waterfox G5.0b2":           "E:\\Portable\\Browsers\\Waterfox G5.0b2 Setup\\Waterfox\\Waterfox.exe",  
    "Librewolf 101.0.1":           "E:\\Portable\\Browsers\\librewolf-101.0.1-1.en-US_64\\LibreWolf\\LibreWolf.exe",
};
 
const FlatMenu = false;
 
const OpenWith = {
    start: function() {
        const cm = document.getElementById("contentAreaContextMenu");
        cm.addEventListener("popupshowing", function(e) {
            if (e.target == this) { OpenWith.onpopup(e); }
        }, false);
    },
 
    createMenu: function() {
        if (this.pageItem || this.linkItem) {
            return;
        }
 
        const contextMenu = document.getElementById("contentAreaContextMenu");
        const pageMenu = this.$C("menu", { id: "context-open-with-page", label: "Открыть в:", class: "menu-iconic",
 image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADLElEQVQ4jW2T20+bdQCGv79lcxx6HN9HYZhl2cyuNEQTvTBZTIyHWxe9MYveaGKi0RtJyDY2FGo/l8G2MkCElhZaoO2go6OTcuhaWoRCSw+jLS0dX3+PN5vJCM/1+1697yNJx7iUtCtt4RG1Nfh3SvG7hTzjFWb3o5RpLKS2TySV4/nXsMTudrfHhmmLuVFCDuQ5Fy2eaSyeEHpXBONoFNke7z6x3L5p87ZrLuT1Bxgf38McGEGem8Q0NU2nb4nvI1voR9bQuSro72x6Xyu3bvd0fVCf59fcMudWhsWHUQ9frIcweCdocXtoGp3hp7UtIsUjYRmKIU9VMNh2uiRJkqTLZZtRzvXxaXEKhBDJahkhBN/Gn2KecyB7PBjG/TTaH5GoHIIQ4jN/njN9eZSBmlHqyPb2t5at2CvPGNqPYXyicjW+gBCCOzvb6CcnMTn9nL4X4KPZONTr9K09540/Shh+K/RLbZkbqfN7NnZrFS7F7JjDf/KklGO1VKJl1olpysVZZwDDaJC3nKsIrY66XuTUrTS6nnxKsuxdF2+nB0nUnmNcsfLldoCVUhGdb4gm9yh61ySGCR+64QXG/s0jtCOC+SqKmqKhpyAkJXNdvL93n2fVAsaVPq5sTIMm+CGxgprewpnNYnb4OT3oYzazD9oR1OvIaoozN/NCsmRupi7nBkjXyrRFB5HDAyAEQtP4cSPKlaUlGoY9nHc9pVI7Ak3jQazEqd4Mut58SurI9vZbyirLhxmu7QTQPb7N1Y1FModVvlr9h/cWgny3miBXfcHtaJZDrcbn3jSN6gH6W/l+6ULZZlRyfXz8csaLa6M0+610hmcYye4yXygytLvHRXcEWzwHQohvFos09Ocx/l4zSpIkSW/uWrtatYf8XAiDEOLrRIiWhb9onh5DPzmN7JznWjgJQohflnM0jVXRWV8e6RUdSatXeTHOJztzRA4KZA5rxCtlogcVdg9qeLL7vDu3SaOjis527MqvOJe4221ev8/ZqIMLYQ+doQDvLARp8y7S7IrQ9HAVkz12skz/S5W0K0poSDX7RlJGn0MYpjzCMO5LmcaCqnyCzv8BRmmCMzO3S40AAAAASUVORK5CYII=" });
        
        contextMenu.insertBefore(pageMenu, contextMenu.querySelector(":scope > #context-bookmarkpage, :scope > #context-savepage"));
 
        const linkMenu = this.$C("menu", { id: "context-open-with-link", label: "Открыть ссылку в:", class: "menu-iconic",
 image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADLElEQVQ4jW2T20+bdQCGv79lcxx6HN9HYZhl2cyuNEQTvTBZTIyHWxe9MYveaGKi0RtJyDY2FGo/l8G2MkCElhZaoO2go6OTcuhaWoRCSw+jLS0dX3+PN5vJCM/1+1697yNJx7iUtCtt4RG1Nfh3SvG7hTzjFWb3o5RpLKS2TySV4/nXsMTudrfHhmmLuVFCDuQ5Fy2eaSyeEHpXBONoFNke7z6x3L5p87ZrLuT1Bxgf38McGEGem8Q0NU2nb4nvI1voR9bQuSro72x6Xyu3bvd0fVCf59fcMudWhsWHUQ9frIcweCdocXtoGp3hp7UtIsUjYRmKIU9VMNh2uiRJkqTLZZtRzvXxaXEKhBDJahkhBN/Gn2KecyB7PBjG/TTaH5GoHIIQ4jN/njN9eZSBmlHqyPb2t5at2CvPGNqPYXyicjW+gBCCOzvb6CcnMTn9nL4X4KPZONTr9K09540/Shh+K/RLbZkbqfN7NnZrFS7F7JjDf/KklGO1VKJl1olpysVZZwDDaJC3nKsIrY66XuTUrTS6nnxKsuxdF2+nB0nUnmNcsfLldoCVUhGdb4gm9yh61ySGCR+64QXG/s0jtCOC+SqKmqKhpyAkJXNdvL93n2fVAsaVPq5sTIMm+CGxgprewpnNYnb4OT3oYzazD9oR1OvIaoozN/NCsmRupi7nBkjXyrRFB5HDAyAEQtP4cSPKlaUlGoY9nHc9pVI7Ak3jQazEqd4Mut58SurI9vZbyirLhxmu7QTQPb7N1Y1FModVvlr9h/cWgny3miBXfcHtaJZDrcbn3jSN6gH6W/l+6ULZZlRyfXz8csaLa6M0+610hmcYye4yXygytLvHRXcEWzwHQohvFos09Ocx/l4zSpIkSW/uWrtatYf8XAiDEOLrRIiWhb9onh5DPzmN7JznWjgJQohflnM0jVXRWV8e6RUdSatXeTHOJztzRA4KZA5rxCtlogcVdg9qeLL7vDu3SaOjis527MqvOJe4221ev8/ZqIMLYQ+doQDvLARp8y7S7IrQ9HAVkz12skz/S5W0K0poSDX7RlJGn0MYpjzCMO5LmcaCqnyCzv8BRmmCMzO3S40AAAAASUVORK5CYII=" });
        contextMenu.insertBefore(linkMenu, contextMenu.querySelector(":scope > #context-sep-open"));
 
        this.pageItem = this.createMenuItem(pageMenu, "openPage", FlatMenu? "Открыть в $1 ":"  $1");
        this.linkItem = this.createMenuItem(linkMenu, "openLink", FlatMenu? "Открыть ссылку в $1 ":"  $1");
    },
     
    createMenuItem: function(menu, method, format) {
        const frag = document.createDocumentFragment();
         
        let menuitem = [];
        for (let i of Object.keys(BrowserPath)) {
            const item = this.$C("menuitem", {
                label:    format.replace("$1", i),
                class:    "menuitem-iconic",
                image:    "moz-icon:file:///" + BrowserPath[i].split("<>")[0] + "?size=16",
                value:    JSON.stringify([ method, i ]),
            });
            item.addEventListener("command", this, false);
 
            frag.appendChild(item);
            menuitem[menuitem.length] = item;
        }
         
        if (!FlatMenu) {
            const menupopup = this.$C("menupopup");
            menupopup.appendChild(frag);
            menu.appendChild(menupopup);
            menuitem = [ menu ];
        }
        else {
            const parent = menu.parentNode;
            parent.insertBefore(frag, menu);
            parent.removeChild(menu);
        }
         
        return menuitem;
    },
 
    $C: function(tag, attrs) {
        const elem = document.createXULElement(tag);
        if (attrs) {
            for (let key of Object.keys(attrs))
                elem.setAttribute(key, attrs[key]);
        }
        return elem;
    },
 
    onpopup: function(e) {
        this.createMenu();
         
        const isHtml = /^(https?|file):/.test(gBrowser.currentURI.spec);
        const pageItemHidden = !isHtml || gContextMenu.onLink || gContextMenu.onTextInput;
        const linkItemHidden = !isHtml || !gContextMenu.onLink || gContextMenu.onTextInput;
         
        const pageItem = this.pageItem;
        for (let i = 0, l = pageItem.length; i < l; i++) {
            pageItem[i].hidden = pageItemHidden;
        }
        const linkItem = this.linkItem;
        for (let i = 0, l = linkItem.length; i < l; i++) {
            linkItem[i].hidden = linkItemHidden;
        }
    },
 
    handleEvent: function(event) {
        if (event.type === "command") {
            const [ method, key ] = JSON.parse(event.originalTarget.getAttribute("value"));
            const url = method === "openPage"? gBrowser.currentURI.spec: gContextMenu.linkURL;
            this.launch(BrowserPath[key], url);
        }
    },
     
    launch: function(browserPath, openURL) {
        let [ path, args ] = browserPath.split("<>");
        if (args) {
            args = args.split("^^").map(a => a.replace("$1", openURL));
        } else {
            args = [ openURL ];
        }
         
        const file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath(path);
         
        const process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
        process.init(file);
        process.run(false, args, args.length, {});
    },
};
 
OpenWith.start();
 
})();

Всего записей: 288 | Зарегистр. 26-11-2016 | Отправлено: 20:50 08-10-2022
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Mozilla Firefox (часть 23)
Maz (14-06-2023 18:22): Mozilla Firefox (часть 24)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru