1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Boersenfeger

Beiträge von Boersenfeger

  • Was hört Ihr gerade?

    • Boersenfeger
    • 5. Oktober 2024 um 16:26
    Die ARD-Bundesligakonferenz im Audiostream
    Bundesliga live aus den Stadien: Bei der Sportschau hören Sie jedes Einzelspiel und die ARD Bundesligakonferenz in voller Länge. Zudem finden Sie hier die…
    www.sportschau.de
  • FF131: Schon wieder funktionieren 2 js-Scripte nicht mehr

    • Boersenfeger
    • 5. Oktober 2024 um 16:09

    Heißt das, das alle onclick Beschreibungen in Scripts in addEventListener umzuschreiben sind?
    Siehe z. B. hier: Zeile 480 und 495

    JavaScript
    // ==UserScript==
    // @name         AddonsPage.uc.js
    // @description  Bei about:addons (Add-ons Verwaltung) rechtsklick auf installierte Erweiterung
    // @description  zum Anzeigen der neu hinzugefügen Kontextmenüeinträge.
    // @description  Bei Detailseite (klick auf Mehr) wird die Installationsadresse - Pfad, hinzugefügt
    // @author       ywzhaiqi
    // @include      main
    // @charset      utf-8
    // @version      2018.06.27
    // @downloadURL  https://raw.github.com/ywzhaiqi/userChromeJS/master/AddonsPage/AddonsPage.uc.js
    // @homepageURL  https://github.com/ywzhaiqi/userChromeJS/tree/master/AddonsPage
    // @reviewURL    http://bbs.kafan.cn/thread-1617407-1-1.html
    // @optionsURL   about:config?filter=view_source.editor.path
    // @note         - Rechtsklick bei Add-On, um das Menü anzuzeigen bei (Erweiterungen, Themes, Plug-Ins), und kopieren Sie den Namen. 
    // @note         - Greasemonkey und Scriptish verfügen schon über dieses Menü.
    // @note         - Bei GM-Skript, Erweiterungen und Themen die Installationsadresse und den Plug-in-Pfad zum Kontextmenü hinzugefügt
    // @note         - Seite für die Skriptverwaltung wurde hinzugefügt
    // @note         - Rechtsklickmenü "Add-ons anzeigen" erfordert DOM Inspector, geht nur bis Firefox 56.0.2
    // @note         - UC-Skript-Verwaltungsschnittstelle
    // @note         - Aktivieren deaktivieren von Scripten erfordert rebuild_userChrome.uc.xul Script
    // @note         - Für Editor unter about:config bei view_source.editor.path den Pfad zum Editor eingeben
    // @note         - Icon Style hinzugefügt,siehe Homepage für Details
    // @note         - Weitere Informationen finden Sie auf der Homepage
    // ==/UserScript==
    
    location == AppConstants.BROWSER_CHROME_URL && (function() {
    
        var iconURL = "";  // uc Symbol für Scriptliste
    
        var Config = {
            debug: 0,  // 1 = Rechtsklickmenü UC Scriptverwaltung - Menüeinträge anzeigen, 0 = nicht anzeigen 
            detailView: 1,  // Auf Details-Seite Installation-Link hinzufügen
        };
    
        if (window.AM_Helper) {  // Debuggen ändern, Neuladen ohne Neustart
            window.AM_Helper.uninit();
            delete window.AM_Helper;
        }
        if (window.userChromeJSAddon) {
            window.userChromeJSAddon.uninit();
            delete window.userChromeJSAddon;
        }
    
        Cu.import("resource://gre/modules/AddonManager.jsm");
    
        let isCN = false;
        try {
            isCN = Services.prefs.getCharPref("general.useragent.locale").indexOf("zh") != -1;
        } catch (e) {
            try {
                isCN = Services.prefs.getCharPref("intl.locale.requested").indexOf("zh") != -1;
            } catch (e) {
            }
        }
    
        var ApplyPatchForScript = (function() {
            const USO_URL_RE = /(^https?:\/\/userscripts.org.*\/scripts\/source\/\d+)\.\w+\.js$/i;
    
            const GFO_URL_RE_1 = /(^https?:\/\/greasyfork.org\/scripts\/code\/\w+)\.\w+\.js$/i;
            const GFO_URL_RE_2 = /(^https?:\/\/greasyfork.org\/scripts\/[^\/]+\/)code[\.\/].*\w+\.js$/i;
    
            // (http://binux.github.io/ThunderLixianExporter/)master/ThunderLixianExporter.user.js
            const GITHUB_URL_RE_1 = /(^https?:\/\/\w+.github.io\/\w+\/)master\/.*.*\w+\.js$/i;
            // 从   https://raw.githubusercontent.com/ywzhaiqi/userscript/master/noNoticetitleflashOnBBS.user.js
            // 转为 https://github.com/ywzhaiqi/userscript/blob/master/noNoticetitleflashOnBBS.user.js
            const GITHUB_URL_RE_2 = /(^https?:\/\/raw.githubusercontent.com\/.*?\/master\/.*\.user\.js$)/i;
    
            function getScriptHomeURL(downURL) {
                var url;
                if (downURL && downURL.startsWith('http')) {
                    if (USO_URL_RE.test(downURL)) {
                        url = RegExp.$1.replace(/source/, "show");
                    } else if (GFO_URL_RE_1.test(downURL)) {
                        url = RegExp.$1;
                    } else if (GFO_URL_RE_2.test(downURL)) {
                        url = RegExp.$1;
                    } else if (GITHUB_URL_RE_1.test(downURL)) {
                        url = RegExp.$1;
                    } else if (GITHUB_URL_RE_2.test(downURL)) {
                        url = RegExp.$1.replace('raw.githubusercontent.com', 'github.com')
                                .replace('/master/', '/blob/master/');
                    }
                }
                return url ? decodeURIComponent(url) : null;
            }
    
            function addHomePage() {
                // Scriptish Scripte-Homepage hinzufügen
                if (window.Scriptish_config) {
                    Scriptish_config.scripts.forEach(function(script) {
                        if(script.homepageURL) return;
    
                        var url = script.updateURL || script.downloadURL;
                        script.homepageURL = getScriptHomeURL(url);
                    });
                }
    
                // Greasemonkey Scripte-Homepage hinzufügen
                AddonManager.getAddonsByTypes(['greasemonkey-user-script'], function (aAddons) {
                    aAddons.forEach(function (aAddon) {
                        if (aAddon.homepageURL) return;
    
                        var url = aAddon._script._downloadURL || aAddon._script._updateURL;
                        var homepageURL = getScriptHomeURL(url);
                        if (homepageURL) {
                            aAddon.homepageURL = homepageURL;
                        } else {
                            // console.log(aAddon.name, url);
                        }
                    });
                });
            }
    
            return {
                init: addHomePage
            }
        })();
    
        setTimeout(function() {
            ApplyPatchForScript.init();
        }, 2000);
    
        window.AM_Helper = {
            init: function() {
                document.addEventListener("DOMContentLoaded", this, false);
                this.platformVersion = parseFloat(Services.appinfo.platformVersion);
            },
            uninit: function() {
                document.removeEventListener("DOMContentLoaded", this, false);
            },
            handleEvent: function(event) {
                switch (event.type) {
                    case "DOMContentLoaded":
                        var doc = event.target;
                        var win = doc.defaultView;
    
                        if (["about:addons", "chrome://mozapps/content/extensions/extensions.xhtml"].indexOf(doc.URL) == -1)
                            return;
    
                        this.addPopupMenu(doc);
    
                        // Menü-Aufruf
                        win.AM_Helper = AM_Helper;
                        this.win = win;
    
                        if (Config.detailView) {
                            var self = this;
                            var observer = new MutationObserver(function(e) {
                                e = e[e.length-1];
                                if (e.attributeName == "loading") {
                                    var doc = e.target.ownerDocument;
                                    self.setUrlOrPath(doc);
                                }
                            });
                            observer.observe(doc.getElementById("detail-view"), {attributes: true});
                        }
                        break;
                    case "popupshowing":
                        this.getAddon(this.win.document.popupNode.value,
                                      this.setItemsAttributes,
                                      event);
                        break;
                }
            },
            addPopupMenu: function(doc) {
                var ins = doc.getElementById("menuitem_uninstallItem");
                if (!ins) return;
    
                ins = ins.nextSibling;
                var popup = ins.parentNode;
    
                var menuitem = $C("menuseparator", {
                    id: "AM-separator-1"
                });
                popup.insertBefore(menuitem, ins);
    
                menuitem = $C("menuitem", {
                    id: "AM-inspect-addon",
                    label: isCN ? "查看附加组件" : "Erweiterung inspizieren",
                    accesskey: "i",
                    tooltipText: isCN ? "调用 DOM Inspector 查看 addon 对象" : "Addon mit Dom Inspector inspizieren",
                    oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.inspectAddon);"
                });
                popup.insertBefore(menuitem, ins);
    
                menuitem = $C("menuitem", {
                    id: "AM-edit-script",
                    label: isCN ? "编辑" : "Script bearbeiten",
                    accesskey: "b",
                    hidden: true,
                    oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.editScript);"
                });
                popup.insertBefore(menuitem, ins);
    
                menuitem = $C("menuitem", {
                    id: "AM-reload-uc",
                    hidden: true,
                    label: isCN ? "重载 uc 脚本(慎用)" : "UC Script neuladen",
                    style: "font-weight:bold",
                    tooltiptext: "Nur teilweise Skriptunterstützung. Bei Problemen Firefox Neustarten.",
                    oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.reloadUserChromeJS);"
                });
                popup.insertBefore(menuitem, ins);
    
                menuitem = $C("menuitem", {
                    id: "AM-browse-dir",
                    label: isCN ? "查看所在目录" : "Installations-Verzeichnis",
                    accesskey: "V",
                    oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.browseDir);"
                });
                popup.insertBefore(menuitem, ins);
    
                menuitem = $C("menuitem", {
                    id: "AM-open-url",
                    label: isCN ? "打开安装页面" : "Installationsseite öffnen",
                    accesskey: "s",
                    tooltiptext: null,
                    oncommand: "openURL(this.tooltipText)",
                });
                popup.insertBefore(menuitem, ins);
    
                menuitem = $C("menuitem", {
                    id: "AM-copy-name",
                    label: isCN ? "复制名称" : "Namen kopieren",
                    accesskey: "k",
                    oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.copyName);"
                });
                popup.insertBefore(menuitem, ins);
                popup.addEventListener("popupshowing", this, true);
            },
            setItemsAttributes: function(aAddon, event) {
                var popup = event.target;
                var doc = popup.ownerDocument;
    
                var
                    isExtension = (aAddon.type == "extension"),
                    isTheme = (aAddon.type == "theme"),
                    isPlugin = (aAddon.type == "plugin"),
                    isUserStyle = (aAddon.type == "userstyle"),
                    isScriptish = (aAddon.type == "userscript"),
                    isGreasemonkey = (aAddon.type == "user-script") || // Greasemonkey
                                    (aAddon.type == "greasemonkey-user-script"), // Greasemonkey 1.7+
                    isUserScript = isGreasemonkey || isScriptish,
                    isUserChromeJS = (aAddon.type == "userchromejs"),
                    isService = (aAddon.type == "service"),
                    menuitem
                ;
    
                menuitem = doc.getElementById("AM-browse-dir");
                menuitem.hidden = isUserStyle || isUserScript || isService;
    
                menuitem = doc.getElementById("AM-edit-script");
                menuitem.hidden = !isUserChromeJS;
    
                menuitem = doc.getElementById("AM-reload-uc");
                menuitem.hidden = !Config.debug || !isUserChromeJS;
    
                var className = isGreasemonkey ? "greasemonkey" : "";
    
                // install url
                menuitem = doc.getElementById("AM-open-url");
                var installURL = isExtension ?
                            (this.getInstallURL(aAddon) || aAddon.homepageURL) :
                            (aAddon.homepageURL || this.getInstallURL(aAddon));
                menuitem.tooltipText = installURL;
                menuitem.hidden = !installURL;
                menuitem.className = installURL ? className : '';
    
                menuitem = doc.getElementById("AM-inspect-addon");
                menuitem.disabled = !("inspectObject" in window);
                menuitem.className = menuitem.disabled ? '' : className;
    
                menuitem = doc.getElementById("AM-copy-name");
                menuitem.tooltipText = aAddon.name;
                menuitem.className = className;
    
                // if(isUserScript && !isScriptish) {
                //     var usoURL = "";
                //     if (aAddon._script) {
                //         var usDownloadURL = aAddon._script._downloadURL;
                //         var usUpdateURL = aAddon._script._updateURL;
                //         if (USO_URL_RE.test(usDownloadURL)) {
                //             usoURL = usDownloadURL;
                //         } else if (USO_URL_RE.test(usUpdateURL)) {
                //             usoURL = usUpdateURL;
                //         }
                //     }
    
                //     menuitem = doc.getElementById("AM-go-uso");
                //     menuitem.disabled = !USO_URL_RE.test(usoURL);
                //     menuitem.className = isUserScript ? menuitem.disabled ? "" : "greasemonkey" : "";
                //     menuitem.tooltipText = usoURL.replace(/source/, "show")
                //         .replace(/.\w+.js$/, "");
    
                //     menuitem = doc.getElementById("AM-find-uso");
                //     menuitem.disabled = USO_URL_RE.test(usoURL);
                //     menuitem.className = isUserScript ? menuitem.disabled ? "" : "greasemonkey" : "";
                //     menuitem.setAttribute("find-on-uso",
                //         "https://www.google.com.hk/search?q=site:userscripts.org+inurl:scripts+inurl:show+" +
                //         encodeURIComponent(aAddon.name));
                // }
            },
    
            getPopupNode: function (aNode) {
                var doc = aNode.ownerDocument;
                return "triggerNode" in aNode.parentNode ? aNode.parentNode.triggerNode : doc.popupNode;
            },
            getAddon: function (aId, aCallback, aEvent) {
                var self = this;
                if (this.win.gDetailView._addon) {
                    aCallback.apply(this, [this.win.gDetailView._addon, aEvent]);
                    return;
                }
    
                (self.platformVersion < 61.0?
                    new Promise((resolve, reject) => AddonManager.getAllAddons(addons => resolve(addons))):
                    AddonManager.getAllAddons()
                ).then(addons => {
                    for (var i = 0; i < addons.length; i++) {
                        if (addons[i].id == aId) {
                            aCallback.apply(self, [addons[i], aEvent]);
                            return;
                        }
                    }
                });
            },
    
            inspectAddon: function (aAddon) {
                inspectObject(aAddon);
            },
            inspectUserscript: function (aAddon) {
                inspectObject(aAddon._script);
            },
            browseDir: function (aAddon) {
                switch (aAddon.type) {
                    case "plugin":
                        var pathes = aAddon.pluginFullpath;
                        for (var i = 0; i < pathes.length; i++) {
                            this.revealPath(pathes[i]);
                        }
                        return;
                    case "userchromejs":
                        var file = aAddon._script.file;
                        if (file.exists())
                            file.reveal();
                        return;
                }
    
                // addon
                var gecko = parseInt(Services.appinfo.platformVersion);
                var nsLocalFile = Components.Constructor("@mozilla.org/file/local;1", (gecko >= 14) ? "nsIFile" : "nsILocalFile",
                    "initWithPath");
    
                var dir = Services.dirsvc.get("ProfD", Ci.nsIFile);
                dir.append("extensions");
                dir.append(aAddon.id);
                var fileOrDir = dir.path + (dir.exists() ? "" : ".xpi");
                //Application.console.log(fileOrDir);
                try {
                    (new nsLocalFile(fileOrDir)).reveal();
                } catch (ex) {
                    var addonDir = /.xpi$/.test(fileOrDir) ? dir.parent : dir;
                    try {
                        if (addonDir.exists()) {
                            addonDir.launch();
                        }
                    } catch (ex) {
                        var uri = Services.io.newFileURI(addonDir);
                        var protSvc = Cc["@mozilla.org/uriloader/external-protocol-service;1"].
                        getService(Ci.nsIExternalProtocolService);
                        protSvc.loadUrl(uri);
                    }
                }
            },
            editScript: function(aAddon) {
                if (aAddon.type == "userchromejs") {
                    var path = aAddon._script.file.path;
                    this.launchEditor(path);
                }
            },
            reloadUserChromeJS: function (aAddon) {
                if (aAddon.type != "userchromejs") return;
    
                var result = confirm("Neu laden, sicher?\n Mit Vorsicht verwenden, es wird nur von einigen Skripten unterstützt.\n Nicht unterstützte Skripte können Probleme beim Hinzufügen von Schaltflächen,\n Menüs oder Ereignissen haben.\n Bei Problemen, Firefox neu starten.");
                if (!result) return;
    
                var script = aAddon._script;
    
                Services.obs.notifyObservers(null, "startupcache-invalidate", "");
                Services.scriptloader.loadSubScript(script.url, {}, script.charset || "utf-8");
            },
            launchEditor: function(path){
                var editor = Services.prefs.getCharPref("view_source.editor.path");
                if (!editor) {
                    toOpenWindowByType('pref:pref', 'about:config?filter=view_source.editor.path');
                    return;
                }
    
                var UI = Cc['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Ci.nsIScriptableUnicodeConverter);
                var platform = window.navigator.platform.toLowerCase();
                UI.charset = platform.indexOf('win') > -1 ? 'GB2312' : 'UTF-8';
                path = UI.ConvertFromUnicode(path);
    
                var appfile = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
                appfile.initWithPath(editor);
                var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
                process.init(appfile);
                process.run(false, [path], 1, {});
            },
            copyName: function (aAddon) {
                this.copyToClipboard(aAddon.name);
            },
    
            getInstallURL: function(aAddon) {
                aAddon = aAddon || this.win.gViewController.viewObjects.detail._addon;
                if (!aAddon) return null;
    
                var url = null;
                switch (aAddon.type) {
                    case "extension":
                    case "theme":
                        url = (aAddon.contributionURL || aAddon.reviewURL) || null;
                        return url && url.replace(/\/developers|\/reviews/g, "") || aAddon.creator.url;
                    case "greasemonkey-user-script":
                        return aAddon._script._downloadURL || aAddon._script._updateURL;
                    case "userscript":
                        url = aAddon._downloadURL || aAddon._updateURL;
                        return url;
                    case "userchromejs":
                        return aAddon.homepageURL || aAddon.reviewURL || aAddon.downloadURL || aAddon.updateURL;
                    default:
                        return aAddon.homepageURL;
                }
            },
    
            get getPath() {
                var url = this.win.gViewController.viewObjects.detail._addon;
                if (!url) return false;
                return url.pluginFullpath || false;
            },
            setUrlOrPath :function(doc) {
                var installURL = this.getInstallURL();
                if (!installURL && !this.getPath) return;
    
                if (!doc.getElementById("detail-InstallURL-row")) {
                    var value = "", label = "";
                    if (this.win.gViewController.currentViewId.indexOf("detail") != -1) {
                        var aAddon = this.win.gViewController.viewObjects.detail._addon;
                        switch (aAddon.type) {
                            case "extension":
                            case "theme":
                            case "greasemonkey-user-script":
                                value = installURL;
                                label = isCN? "安装页面": "Installationseite";
                                break;
                            case "plugin":
                                value = this.getPath;
                                label = isCN? "路径": "Pfad";
                                break;
                        }
                    }
                    if (!!value && !!label) {
                        const row = $C("row", {
                            id:     "detail-InstallURL-row",
                            class:  "detail-row-complex",
                            label:  label,
                        });
                        row.appendChild($C("label", {
                            class:  "detail-row-label",
                            value:  label,
                        }));
                        if (typeof(value) != "string") {
                            const vbox = row.appendChild($C("vbox"));
                            for (var i=0;i< value.length;i++) {
                                vbox.appendChild($C("label", {
                                    class:  "detail-row-value text-link",
                                    crop:   "end",
                                    value:  value[i],
                                    href:   value[i],
                                    onclick: `
                                        if(event.button == 0) {
                                            AM_Helper.revealPath(this.value);
                                        } else if (event.button == 2){
                                            AM_Helper.copyToClipboard(this.value);
                                        }
                                        return false;`,
                                }));
                            }
                        } else {
                            row.appendChild($C("label", {
                                class:  "detail-row-value text-link",
                                crop:   "end",
                                value:  value,
                                href:   value,
                                onclick: `
                                    if(event.button == 2){
                                        AM_Helper.copyToClipboard(this.value);
                                        return false;
                                    }`,
                            }));
                        }
                        doc.getElementById("detail-rows").appendChild(row);
                    }
                }
            },
            revealPath: function(path) {
                var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
                file.initWithPath(path);
                if (file.exists())
                    file.reveal();
            },
            copyToClipboard: function (aString) {
                Cc["@mozilla.org/widget/clipboardhelper;1"].
                    getService(Ci.nsIClipboardHelper).copyString(aString);
            }
        };
    
        window.userChromeJSAddon = {
            scripts: [],
            unloads: [],
    
            init: function() {
    	        if ('userchromejs' in AddonManager.addonTypes) return;
    
                this.initScripts();
                this.registerProvider();
                this.addStyle();
            },
            uninit: function() {
                this.unloads.forEach(function(func) { func(); });
            },
            initScripts: function() {
                var scripts = window.userChrome_js.scripts.concat(window.userChrome_js.overlays);
    
                var self = this;
                scripts.forEach(function(script, i) {
                    self.scripts[i] = new ScriptAddon(script);
                });
            },
            getScriptById: function(aId) {
                for (var i = 0; i < this.scripts.length; i++) {
                    if (this.scripts[i].id == aId)
                        return this.scripts[i];
                }
                return null;
            },
            registerProvider: function() {
                var types = null;
                if (AddonManagerPrivate.AddonType) {
                    types = [new AddonManagerPrivate.AddonType(
                        "userchromejs",
                        "",
                        isCN ? "uc 脚本" : "userChrome JS",
                        AddonManager.VIEW_TYPE_LIST,
                        9000)];
                }
    
                const provider = {
                    getAddonByID: function(aId, aCallback) {
                        let script = userChromeJSAddon.getScriptById(aId);
                        if (aCallback)
                            aCallback(script);
                        else
                            return Promise.resolve(script); // Fx61.0-
                    },
    
                    getAddonsByTypes: function(aTypes, aCallback) {
                        if (aTypes && aTypes.indexOf("userchromejs") < 0) {
                            if (aCallback)
                                aCallback([]);
                            else
                                return Promise.resolve([]);
                        } else {
                            if (aCallback)
                                aCallback(userChromeJSAddon.scripts);
                            else
                                return Promise.resolve(userChromeJSAddon.scripts);
                        }
                    }
                };
    
                AddonManagerPrivate.registerProvider(provider, types);
    
                this.unloads.push(function() {
                    AddonManagerPrivate.unregisterProvider(provider);
                });
            },
            addStyle: function() {
                let data = '@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);\
                    \
                    @-moz-document url("about:addons"), url("chrome://mozapps/content/extensions/extensions.xhtml") {\
                        #category-userchromejs > .category-icon {\
                            list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAamSURBVEhLPVZpUJVVGP6AkAuyL7IEsckijAgSqZnplDpWFjVOoWNjaNNMigpmJtsFbWrGcRwVy7Zxwcom+2EzWbIvskeuiMrl7h+X6wUUTRERl6fnHLAf75xzvnvP87zPu32f4uPjg5CQEERGRiIhIQEHDhyAxWqBrb8fvfpeXLhwAbNmzUJsbCxCQqPg7e2P3UVhQL8XYHcG+pzwRHXieWI/blTwgDbaO7Eqvr6+CA0NRVRUlCTYvXs3HA4HjEYjenp60NXVhdS0NEnwXGQ8fH2DsKswEKMGVwl4n0DCYCOBlWc9933OuDf5TPHz80NQUBAiIiIwY8YMlJWVYXBwECaTCdeuXcPZs2elAuFASGgk/HwDsOPTGIypM3FbF4l7pjiMGOIwfC2a51g87IuhGvdJVS4TBGFhYZg+fTqSk5OxZ88eDAwMwGAwQNfbiytXrmDmzJny9/DwCIiQlmpz4LCdwe2hNtwabMOQvQl2tRGquRUjN07gX104HlsUPDRPhuipgqSkJOzduxdWqxV9fX3o7u7GxYsXkZ6eLhWIUPr5+6OoeCdU2zBM5kHYr9+B2ToEg2kIVts4hocu4o4+DqACES7FnxeEAhFjoWD//v2SQIRITxVXr179X4FwQigoLtZCVW3Mk5kEAzBbVFhVO4vCgeHBDoxZEmTSxwwkEBeeJlmACAWqqkpwkeTOfzqlgqcEwiGtVivzZLfbpSNCbX//dZgsgxiwNeKRLQmPGB5JIC4EBgZKgPiEeFlFN4dvQuUls9mMS5cuIY1VJMpYEIiQFhQUyEoTjlgsLGmbjQqoyDQAm6WOIYqVBOOmyRxMmzYNMTExsoqEAnFZhEmv10uClJQUkicgiv/xpUP5hYXoo/d97BWVq95sgs0xCNVxl2QNuG2MZmWxD1QSeHl5ySSLEAmCOXPmSFuydCkWLVqEhQsXyrP4LYyh9PH2RmlJCez02kaVdpKY2TMOuwP9TPytgVbcNyexF9xwT+86QSAUxMXFySpKTU1FRkaGrP158+bhxfnzkT57NtLj4zGD+UrSaJCzeDGObN2KI5s345fcXJzMy0PFp9tQv12LzsKP0b0tEsbtXrAU+EPx9ApEYFA4YqcnkSBZJnQ2AecTeO7cuVjw8stII2kKVaY7OeG1KVPwposLMrl/z9kZHykKPqPtcnXFQY07jkxxxUnXKah380C7ZiqUgIBgBAeLKnqOoyJeei4UiMQKgpcWLEBiYiIS6f08Ai8h2HJaFgmyuW7hWsz1Kzc3/Dh1Kn5106BW441Odx90e/hB2bk1AGWfB2P/F4koKV6PjRs/QW5uHvLz81FaWorCoiJoi4vxDsP1PD1e9swzyHJ3Rxb3awm+nuA7SVzG5+V8foJKKnhu4/k8TRk3e+CBWYNbuni0Nh5GdU0brQ5VVVVobm5GXUMDWltbUZCdjRd44VUCZhL8XYKs9vDAOoJuY+K/DAjAPobxa46e49z/TqviWREz47FV4aAKx5m673DqzwacPl2FisoKEtWgsakJdXV12L5mDVII/grtDdoKhmOM1XODjXab6ziraUy14jGr6wF7Y4Qlfo+mCHBcd8Gtnii0njmMmtp21FBBRUWFVFFL8NraWmx7/32kE1goWM7QZAX4o58A1iHOIPaNhf1g476HzWm0s3T5TMdGVOSLggT/6qLR2XYM9Q2dBK6R4NXV1aisrkITVRSuXYvUSYKltFXTgtDPaWsisJneW2g9VNPNZ0aqMPHcxb0i3jywOVFBNDpajhGwnSFpopJ6afWNTWhuakF+9lpk0HMRoreZg0zG3nDuHHoZHh1nll6nQxcn72V2/hW+pK5evixXRcxssKVHjHFobjyOP/7sRF39PwSesEomvbKqGXmr1iCN4MsI/ibXt0j27bp1OJqzAeVcT7HZqrdsQcX69WjZtAkdOTn4m3tFDCQwDyOGCLQ3lKCh9hia6g/JcP3dUo6WM4dwruNnaNetwCwCL1acJHgm9ytpG1hZ20laxqR/Q1XHuf7Bbm/19EQ7z1LBKF8MT1QN8/AsRk3xMlx3eids1ByNu4YEHMyLxWzFBa86ueJ1Aq8i6Ie0XJLt4Pkrgh0l+C9suEraeRJcEgQiB2Jui/Uh1YgxK0ctvwhE6MZFCO1T8QMbMo0ES5w1sg9EJ68WCmha7vcQ9Hv2xU/0/hStgwQdXJVH7IP7JBChEnuhSLzqxCeH/FLgp8ljqwcJgpHh7EYFbpJgJRvtAwILghKu++htORvuNw7Pvwjcyf15T0/8BxKwaUMvdQeUAAAAAElFTkSuQmCC);\
                        }\
                    }';
                let styleService = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
                let styleURI = Services.io.newURI("data:text/css," + encodeURIComponent(data), null, null);
                styleService.loadAndRegisterSheet(styleURI, Ci.nsIStyleSheetService.USER_SHEET);
    
                this.unloads.push(function() {
                    styleService.unregisterSheet(styleURI, Ci.nsIStyleSheetService.USER_SHEET);
                });
            },
        };
    
        function ScriptAddon(aScript) {
            this._script = aScript;
    
            this.id = this._script.url;
            this.name = this._script.filename;
            this.description = this._script.description;
            this.enabled = !userChrome_js.scriptDisable[this.name];
    
            // Änderung - Anpassung für userChrome.js
            this.version = this._script.version || null;
            this.author = this._script.author || null;
            this.homepageURL = this._script.homepageURL || null;
            this.reviewURL = this._script.reviewURL || null;
            this.reviewCount = 0;
            this.fullDescription = this._script.fullDescription || null;
            this.downloadURL = this._script.downloadURL || null;
    
            this.iconURL = iconURL;
        }
    
        ScriptAddon.prototype = {
            version: null,
            type: "userchromejs",
            isCompatible: true,
            blocklistState: 0,
            appDisabled: false,
            scope: AddonManager.SCOPE_PROFILE,
            name: null,
            creator: null,
            pendingOperations: AddonManager.PENDING_NONE,  // Muss neu gestartet werden, sonst werden alle angezeigt
            operationsRequiringRestart: 6,
            // operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_DISABLE,
    
            get optionsURL() {
                if (this.isActive && this._script.optionsURL)
                    return this._script.optionsURL;
            },
    
            get isActive() {
                return !this.userDisabled? true: false;
            },
            get userDisabled() {
                return !this.enabled? true: false;
            },
            set userDisabled(val) {
                if (val == this.userDisabled) {
                    return val;
                }
    
                AddonManagerPrivate.callAddonListeners(val ? 'onEnabling' : 'onDisabling', this, false);
    
                if (this.pendingOperations == AddonManager.PENDING_NONE) {
                    this.pendingOperations = val ? AddonManager.PENDING_DISABLE : AddonManager.PENDING_ENABLE;
                } else {
                    this.pendingOperations = AddonManager.PENDING_NONE;
                }
    
                this.enabled = !val;
                if (window.userChromejs) {
                    userChromejs.chgScriptStat(this.name);
                }
    
                AddonManagerPrivate.callAddonListeners(val ? 'onEnabled' : 'onDisabled', this);
            },
            get permissions() {
                // var perms = AddonManager.PERM_CAN_UNINSTALL;
                // perms |= this.userDisabled ? AddonManager.PERM_CAN_ENABLE : AddonManager.PERM_CAN_DISABLE;
                var perms = this.userDisabled ? AddonManager.PERM_CAN_ENABLE : AddonManager.PERM_CAN_DISABLE;
                // if (this.updateURL) perms |= AddonManager.PERM_CAN_UPGRADE;
                return perms;
            },
    
            uninstall: function() {
                AddonManagerPrivate.callAddonListeners("onUninstalling", this, false);
                this.needsUninstall = true;
                this.pendingOperations |= AddonManager.PENDING_UNINSTALL;
                AddonManagerPrivate.callAddonListeners("onUninstalled", this);
            },
            cancelUninstall: function() {
                this.needsUninstall = false;
                this.pendingOperations ^= AddonManager.PENDING_UNINSTALL;
                AddonManagerPrivate.callAddonListeners("onOperationCancelled", this);
            },
    
            // Fx62.0-
            enable: function() {
                this.userDisabled = false;
            },
            disable: function() {
                this.userDisabled = true;
            }
        };
    
    
        AM_Helper.init();
    
        userChromeJSAddon.init();
    
        function $C(name, attr) {
            var el = document.createXULElement(name);
            if (attr) Object.keys(attr).forEach(function(n){ el.setAttribute(n, attr[n])});
            return el;
        }
    })();
    Alles anzeigen
  • Mozilla veröffentlicht Firefox 130.0.1

    • Boersenfeger
    • 3. Oktober 2024 um 17:39

    Sören Hentzschel So ein Artikel ist doch dann Nebensache... Alles Gute!

    LG

    Boersenfeger

  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • Boersenfeger
    • 3. Oktober 2024 um 17:25
    Zitat von milupo

    Bei Benutzerskripten reicht der normale Neustart von Firefox nicht. Beim Neustart muss zusätzlich der Skript-Cache geleert werden. Wenn du kein Neustart-Skript hast, mit dem man das mit Rechtsklick auf das entsprechende Symbol machen kann...

    Hier mal ein Restart-Script, das das Geschilderte beherrscht:

    Code
    // Restart button script for Firefox 60+ by Aris
    //
    // left-click on restart button: normal restart
    // middle-click on restart button: restart + clear caches
    // right-click on restart button: restart + clear caches
    //
    // based on 'Quit' button code by 2002Andreas
    // restart code from Classic Theme Restorer add-on
    // invalidate caches from Session Saver add-on
    
    (function() {
    
    try {
      // ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
      var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
      var appversion = parseInt(Services.appinfo.version);
      
      var button_label = "Restart";
     
      CustomizableUI.createWidget({
    	id: "uc-restart", // button id
    	defaultArea: CustomizableUI.AREA_NAVBAR,
    	removable: true,
    	label: button_label, // button title
    	tooltiptext: button_label, // tooltip title
    	onClick: function(event) {
    	  
    	  var cancelQuit   = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
    	  var observerSvc  = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
    			
    	  if(event.button=='1') { // middle-click - clear caches
    		Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).invalidateCachesOnRestart();
    	  }
    	  
    	  if(event.button=='0' || event.button=='2') { // left-click - restart/right-click - clear caches
    		observerSvc.notifyObservers(cancelQuit, "quit-application-requested", "restart");
    			
    		if(cancelQuit.data) return false;
    				
    		Services.startup.quit(Services.startup.eRestart | Services.startup.eAttemptQuit);
    	  }
    	},
    	onCreated: function(button) {
    	  return button;
    	}
    		
      });
      
      var icon = "chrome://global/skin/icons/reload.svg";
      
      if(appversion < 92) icon = "chrome://browser/skin/reload.svg";
      
      // style button icon
      var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
        \
          #uc-restart .toolbarbutton-icon {\
            list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAEZ0FNQQAAsY58%2B1GTAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAN8SURBVHjaVJFNTBxlAIafb2Z29gd2l4VdYCkokAUt1AJplQRTrVqjUWMPPWHSCzb21IOn9qIHY2xMahoTTb00NmkUm5qAjdpUI61VaCxCpCVYixt%2ByvKzCwu7LDs7zMw3HmhM%2Bt6fJ0%2FyCp69wiOzZBCPcqSmIXg0HPHuC4R8nkLWyOXyYiIzfuVHzMIA%2BZsLtH18EApntUdhpzUSD5577nDLi%2FGWKjx%2BHVfR8HpFwNwsxTMzza%2BOXJ1%2B58Ev2sVEV%2ByEawXqxf8FllNWEQ9ePXzsqQOecIDU8jampSAVD76Al2BIIx4Dv2Nz7%2FYq%2B5%2BP8sNXE6WdAhdQlOM9rzUdaGiN8M9UjnKvQjzuA0UjV3AxDIcHywqRoEbXoVrKgyBtKXYEUvprmiN9oaoyvr9wl62NHJbtJeDzOo17YmprVzWOppLO2RRNwf1FSOzSUAXsCIR4QdP13UPfjhUde2mjuBXUjcXNEabOnJmq7Y4Nd7z1fu%2BJ%2FR2Jpgrm0jauAI8GlnSlBi4I0bO6sLBWHc9esxRdmjOZf5n%2B5CLWzCzOvsbKupBZ1xgmElUoC%2BgoKtRGQfNomoaND8P8XS%2Bby1olO7O6GHTl1DejGDOrNB%2BvpO7I%2Ba31%2FDP9Z28YUmqoqhCKcG2EYD6ZMUTojZ8WHmsqD%2BI6wnWFajugCkuuZaV%2FZS47wp99R7E3LbxPV6rtr7dV1pmyuBWs3hr7dZ380LC2tzseffvUHm86C1JC2A%2FrGcn509cn%2BPvTk9ibc1R06qL91Ms1CadF000ll9rVS2VykLzVr0lHOgtpuJ9yUFyXxqhKZjbH2nJRI9IZwyw2kXjvXV%2FIOWgaBcc2a%2BtjdVXR1J3iBDx8QUpQUJAuJJclseogxz441H5vrPO72cm0VSyVPJq27ZaHm8ST3Y0M9d9Kkr19A1A1x4VIObTGBfNrsJ5XmE9b6KqgvrOGhr1Vns2sgeNIkXiigvHf1liZuHWZYjINSEXRVLewZjN6bYmYbvN4rcDvVzFKLnOpErMLBpvbklClznyyyPDA6DjTX3wJWICr%2Bnb3ffjXSGpl5Nxnn88uh2ORUCBaHfVQU%2BsjVuGhKqJT5lFYShr8fGH4j42bH53EnJ4EtgEEPQOTzHx9mqXLl9AT9TS82RvreOmVcMTXVh4JhIr5kp3LFu6u3Lk%2ByMylQazU3ENYAvw3AFUTimFqj5i7AAAAAElFTkSuQmCC");  \
            \
    	  }\
    	\
      '), null, null);
      
      sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
      
    } catch (e) {
    	Components.utils.reportError(e);
    };
    
    })(); 
    Alles anzeigen
  • Firefox 123.0.1 (64-Bit) Windows 10 bei Videos kein Ton außer auf der YouTube Seite

    • Boersenfeger
    • 3. Oktober 2024 um 12:15

    zu 1. Keine gute Idee mit einem systemfremden Tool im Gehirn deiner Windows Installation rumzufuhrwerken.

    Suche hier im Forum mal nach CCleaner, davon wird schon lange abgeraten.

  • Der Glückwunsch-Thread

    • Boersenfeger
    • 2. Oktober 2024 um 14:29

    ... und wünschen vor allem viel Gesundheit! Ich schließe mich an! :)

  • Mozilla VPN 2.24 veröffentlicht

    • Boersenfeger
    • 30. September 2024 um 16:16

    Im Artikel doppelt:

    Mozilla hat Version 2.24 seiner VPN-Clients für das Mozilla VPN veröffentlicht. Dieser Artikel beschreibt die Neuerungen vom Mozilla VPN 2.24.

  • Seit heute funktioniert dieses Sidebar via Hover einblenden nicht mehr

    • Boersenfeger
    • 29. September 2024 um 13:43

    :thumbup:

  • Seit heute funktioniert dieses Sidebar via Hover einblenden nicht mehr

    • Boersenfeger
    • 29. September 2024 um 13:31

    Funktioniert auch.. :P

  • Seit heute funktioniert dieses Sidebar via Hover einblenden nicht mehr

    • Boersenfeger
    • 29. September 2024 um 11:43

    Nachklapp:
    Nach dem eben durchgeführten UpDate musste ich Zeile 33 aus #34 wiederum anpassen:

    Code
    bottom: 27px;

    Laut Sören Hentzschel wird an der Sidebar ja vehement gebastelt. Ggf. wird da auch weitere Anpassung nötig sein. Bei mir spielen da natürlich auch die sonstigen kosmetischen Anpassungen hinein. Es bleibt spannend. ;)

  • Seit heute funktioniert dieses Sidebar via Hover einblenden nicht mehr

    • Boersenfeger
    • 29. September 2024 um 11:26

    Für mich passt es jetzt wieder mit einigen Anpassungen,

    vielen Dank, mal wieder

    ^^:thumbup::

    CSS
    /* Sidebar via Hover hervorrufen und andere Sidebar-Einstellungen */
    
    @-moz-document url("chrome://browser/content/places/bookmarksSidebar.xhtml"),
    url("chrome://browser/content/browser.xhtml") {
    
    #sidebar-main > sidebar-main {
      display: none !important;
    }
    
    #bookmarks-view-children {
      margin-top: -100px !important;
      margin-left: -15px !important;
    }
    
    #sidebar-header {
      display: none !important;
    }
    
    #sidebar-splitter { 
      display: none;
    }
    
    #sidebar {
      border: none !important;
      position: absolute !important;
      width: 300px !important;
    }
    
    #sidebar-box {
      display: flex !important;
      position: absolute !important;
      top: 107px;
      bottom: 48px;
      width: 260px !important; 
      z-index: 100 !important;
      opacity: 0 !important;
      margin-left: -220px !important;
      transition: margin-left .5s linear .4s, opacity .6s ease-in .2s !important;
    }
    
    #sidebar-box:hover {
            z-index: 100 !important;
            opacity: 1 !important;
            margin-left: 0 !important;
            transition: margin-left .66s !important; 
    }
    
    
    
    /* Beschriftungsende anpassen */
    
    treechildren::-moz-tree-cell,
    treechildren::-moz-tree-cell-text {
    margin-inline-end: -8px !important;
    }
    
    /* Lesezeichensidebar Icon-Abstand zur linken Seite */
    
    .sidebar-placesTreechildren[view="bookmarks-view"] {
    margin-left: -10px !important;
    }
    
    
    /* Lesezeichensidebar Icon-Abstand */
    
    
    #bookmarks-view-children:-moz-tree-image {
    margin-right: 5px !important;
    }
    
    
    /* Suchsymbol in der Sidebar ausblenden */
    
    
    .textbox-search-sign{
    display:none !important;}
    
    textbox input.textbox-input::-moz-placeholder,
    #search-container input.textbox-input::-moz-placeholder,
    #urlbar input.textbox-input::-moz-placeholder {
    color: transparent !important;
    }
    
    
    /* Suchleiste Schrift-Größe einstellen */
    
    
    .sidebar-placesTreechildren,sidebarheader,#sidebar-search-label,#search-box {
    font-size: 16px !important;
    font-family: Comic Sans MS, sans-serif !important;
    }
    
    
    /* Sidebar Hintergrundfarbe */
    
    
    #sidebar {
    background: #c1e7bb !important;
    opacity: 1 !important;
    }
    
    
    /* Lesezeichen-Sidebar Suchfeld und auch Haupt-Suchfeld ohne Eintrag */
    
    ::placeholder {
    color: transparent !important;
    }
    
    /* Lesezeichen Sidebar öffnende Dreiecke entfernen */
    
    
    #bookmarksPanel treechildren::-moz-tree-twisty(closed),
    #bookmarksPanel treechildren::-moz-tree-twisty(open){
    height:0!important;
    width:0!important;
    display:none!important;
    }
    
    
    /* Lesezeichen verwalten */
    
    
    treechildren::-moz-tree-image(container) {
    list-style-image: url('data:image/gif;base64,R0lGODlhEAAQAOZMAP/////MAF06AJhlAJNgAP//AP/lAP/UAJViAP/JANShAJRhAP/OAJRgAOy5AMaSAP/nAMyZAP/IAP/NAOazAP/RAMmVALaAAH5TAJNfAM2aAP/dT//XOv/KAOPOkMeRAP/nhOSxAOu4AP3KAOrTkv/nrv//1c6bAKdyAP/TAP/bPdWsMr6LA7iCALqGALiEAJNeAMCMAP/gcv/eYdGdAP/TEP/mgv/2y//gg/3JAP/ila97AP/aKsWPAJFbAJZgALeBAMiVAPC9AP/rOum2AHlQAP/4zP//z//jPpNdAP/LANixNP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAQABAAAAefgEyCg4SFhoeFDQ0LjIiCCyU5IwEBBAiXCAOEBDohFBREIg6jQgibODQKqgonDz0fPkkwDQMEMhYRERpBMUsAv8C1Mw8uLUAXKwA2EgkJDJoEGy8swAAgCZQMz0wEKigkN8wJHZQBFZrcPDsAHErllBMT6AQ1HkYVKQf6++hMGUgAhhgYSBAChH4/TBwpwLAhw35MMAiYSLFiEUcYmQQCADs=')
    !important;
    }
    
    
    /* Zeilenhöhe reduzieren */
    
    .sidebar-placesTree treechildren::-moz-tree-row,
    .placesTree treechildren::-moz-tree-row {
    min-height: 20px !important;
    }
    
    /* Ordner aus der Sidebar ausblenden */
    
    .sidebar-placesTreechildren[view="bookmarks-view"] {
    
    margin-top: -10px!important; }
    
    
    /* Fokusring um Ordner entfernen */
    
    treechildren {
        --default-focusring: 0px !important;
    }
    }
    Alles anzeigen
  • Seit heute funktioniert dieses Sidebar via Hover einblenden nicht mehr

    • Boersenfeger
    • 28. September 2024 um 16:53

    Hier ist damit das Fenster verkleinert und lks erscheinen beim Hovern dann die Lesezeichen.

    Bin jetzt erst Mal weg. Danke einstweilen.

  • Seit heute funktioniert dieses Sidebar via Hover einblenden nicht mehr

    • Boersenfeger
    • 28. September 2024 um 15:41

    Jo, seit heute funktioniert der Code im Nightly nicht mehr bzw. wenn der aktiv ist, kann man die Lesezeichensidebar nicht einblenden.

    Code
    https://hg.mozilla.org/mozilla-central/rev/a38259f7bf5cadf2ce8859b499ea6278501aeded
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0 ID:20240928085335
    CSS
    /* Sidebar via Hover hervorrufen und andere Sidebar-Einstellungen */
    
    @-moz-document url("chrome://browser/content/places/bookmarksSidebar.xhtml"),
    url("chrome://browser/content/browser.xhtml") {
    
    /*Sidebar per hover*/
    
    #menu_bookmarksSidebar {
      display: flex !important;
    }
    
    #bookmarks-view-children {
      margin-top: -100px !important;
      margin-left: -5px !important;
    }
    
    #sidebar-header {
      display: none !important;
    }
    
    
    #sidebar-box {
      margin-left: -4px !important;
      position: relative;
      min-width: 3px !important;
      max-width: 3px !important;
      z-index: 1;
    }
    
    #sidebar-splitter { 
      display: none;
    }
    
    #sidebar-header {
      overflow: hidden;
      padding: 0 !important;
    }
    
    #sidebar-header,
    #sidebar {
      background-color: inherit !important;
      border-right: 5px solid transparent !important;
      transition: min-width 300ms linear .2s !important;
      min-width: 3px !important; 
    }
    
    #sidebar-box:hover > #sidebar-header,
    #sidebar-box:hover > #sidebar {
      min-width: 300px !important;
      transition-delay: 100ms !important;
    }
    
    
    /* Beschriftungsende anpassen */
    
    treechildren::-moz-tree-cell,
    treechildren::-moz-tree-cell-text {
    margin-inline-end: -8px !important;
    }
    
    /* Lesezeichensidebar Icon-Abstand zur linken Seite */
    
    
    .sidebar-placesTreechildren[view="bookmarks-view"] {
    margin-left: -4px !important;
    }
    
    
    /* Lesezeichensidebar Icon-Abstand */
    
    
    #bookmarks-view-children:-moz-tree-image {
    margin-right: 5px !important;
    }
    
    
    /* Suchsymbol in der Sidebar ausblenden */
    
    
    .textbox-search-sign{
    display:none !important;}
    
    textbox input.textbox-input::-moz-placeholder,
    #search-container input.textbox-input::-moz-placeholder,
    #urlbar input.textbox-input::-moz-placeholder {
    color: transparent !important;
    }
    
    
    /* Suchleiste Schrift-Größe einstellen */
    
    
    .sidebar-placesTreechildren,sidebarheader,#sidebar-search-label,#search-box {
    font-size: 16px !important;
    font-family: Comic Sans MS, sans-serif !important;
    }
    
    
    /* Sidebar Hintergrundfarbe */
    
    
    #sidebar {
    background: #c1e7bb !important;
    opacity: 1 !important;
    }
    
    
    /* Lesezeichen-Sidebar Suchfeld und auch Haupt-Suchfeld ohne Eintrag */
    
    ::placeholder {
    color: transparent !important;
    }
    
    /* Lesezeichen Sidebar öffnende Dreiecke entfernen */
    
    
    #bookmarksPanel treechildren::-moz-tree-twisty(closed),
    #bookmarksPanel treechildren::-moz-tree-twisty(open){
    height:0!important;
    width:0!important;
    display:none!important;
    }
    
    
    /* Lesezeichen verwalten */
    
    
    treechildren::-moz-tree-image(container) {
    list-style-image: url('data:image/gif;base64,R0lGODlhEAAQAOZMAP/////MAF06AJhlAJNgAP//AP/lAP/UAJViAP/JANShAJRhAP/OAJRgAOy5AMaSAP/nAMyZAP/IAP/NAOazAP/RAMmVALaAAH5TAJNfAM2aAP/dT//XOv/KAOPOkMeRAP/nhOSxAOu4AP3KAOrTkv/nrv//1c6bAKdyAP/TAP/bPdWsMr6LA7iCALqGALiEAJNeAMCMAP/gcv/eYdGdAP/TEP/mgv/2y//gg/3JAP/ila97AP/aKsWPAJFbAJZgALeBAMiVAPC9AP/rOum2AHlQAP/4zP//z//jPpNdAP/LANixNP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAQABAAAAefgEyCg4SFhoeFDQ0LjIiCCyU5IwEBBAiXCAOEBDohFBREIg6jQgibODQKqgonDz0fPkkwDQMEMhYRERpBMUsAv8C1Mw8uLUAXKwA2EgkJDJoEGy8swAAgCZQMz0wEKigkN8wJHZQBFZrcPDsAHErllBMT6AQ1HkYVKQf6++hMGUgAhhgYSBAChH4/TBwpwLAhw35MMAiYSLFiEUcYmQQCADs=')
    !important;
    }
    
    
    /* Zeilenhöhe reduzieren */
    
    .sidebar-placesTree treechildren::-moz-tree-row,
    .placesTree treechildren::-moz-tree-row {
    min-height: 20px !important;
    }
    
    /* Ordner aus der Sidebar ausblenden */
    
    .sidebar-placesTreechildren[view="bookmarks-view"] {
    
    margin-top: -10px!important; }
    
    
    /* Fokusring um Ordner entfernen */
    
    treechildren {
        --default-focusring: 0px !important;
    }
    }
    Alles anzeigen

    Was müsste wohl geändert werden? :)

  • Was schaut ihr gerade?

    • Boersenfeger
    • 28. September 2024 um 15:14

    Prima, hab ich mal adaptiert und geteilt.... ;):thumbup:

  • Lesezeichen auf dem Handy

    • Boersenfeger
    • 16. September 2024 um 18:32

    .. man kann aber händisch diese in einen Ordner verschieben und via Sync übersichtlich und einheitlich halten.. ;)

    So halte ich es mit den am Handy hinzugefügten Lesezeichen. Die werden am Desktop in die vorhandene Ordnerstruktur sortiert.

  • In memoriam

    • Boersenfeger
    • 16. September 2024 um 12:52

    R.I.P

    ;(

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • Boersenfeger
    • 13. September 2024 um 14:42

    Danke fürs Testen, dann gehe ich mal auf die Suche.. :/

    Edit: Einmal Neustart mit Cache leeren und dann gings wieder...

    Danke, Erledigt... hätte ich ja auch mal gleich versuchen können.. :rolleyes:

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • Boersenfeger
    • 13. September 2024 um 14:31

    Moin, im Nightly leert sich die Suchleiste nicht mehr nach Abschicken des Suchbegriffs. Kann man das wieder hinkriegen?

    JavaScript
    	/* Suchfeld leeren nach 4 Sekunden */
    	/* Author @aborix */
    
    	setTimeout(function() {
    	if (!window.BrowserSearch)
          return;
    	var searchbar = BrowserSearch.searchBar;
    	if (!searchbar)
          return;
    	var textbox = searchbar.textbox;
    	var tId;
    	textbox.addEventListener('input', function() {
          clearTimeout(tId);
          tId = setTimeout(function() {
             textbox.value = '';
             document.getElementById('PopupSearchAutoComplete').hidePopup();
          }, 4000);
    	});
    	}, 0);
    Alles anzeigen
  • Was hört Ihr gerade?

    • Boersenfeger
    • 12. September 2024 um 12:20

    Remember Frankie Beverly...

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • In memoriam

    • Boersenfeger
    • 12. September 2024 um 12:17

    Frankie Beverly, Mitgründer der Soulband Maze, ist im Alter von 77 Jahren gestorben. R.I.P.

Unterstütze uns!

Jährlich (2025)

92,9 %

92,9% (604,17 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon