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

  • Mozilla veröffentlicht Firefox 130.0.1

    • Boersenfeger
    • 9. Oktober 2024 um 18:54

    :thumbup:

  • Mozilla veröffentlicht Firefox 130.0.1

    • Boersenfeger
    • 9. Oktober 2024 um 18:38

    Und heute gabs dann schon das UpDate auf 131.0.2

    Sören Hentzschel Ich schick noch einmal einen Genesungswunsch raus! ;)

  • Google entfernt alle Kaspersky-Apps aus dem Play Store

    • Boersenfeger
    • 8. Oktober 2024 um 17:01

    Ähhh, neee ;)

  • Down- und Upload-Fenster brauchen sehr lange zum Laden

    • Boersenfeger
    • 8. Oktober 2024 um 16:09

    // aber das Geld für den Mist muss doch erst abgenutzt werden..
    BTW: Wenn dem Hersteller des Betriebssystems nicht vertraut wird, sollte man ein anderes nutzen...

  • µBlock Origin Ad-Blocker -Diskussionsthread

    • Boersenfeger
    • 8. Oktober 2024 um 15:02

    Nutz doch mal den o.a. Filter... ich habe jetzt (mit Nightly) die letzten Tage die besagte Webseite mehrmals aufgerufen und nie sah ich irgendwelche Werbung.

  • µBlock Origin Ad-Blocker -Diskussionsthread

    • Boersenfeger
    • 8. Oktober 2024 um 14:03

    Hier gibt es im Nightly neben den u.a. Listen nur einen Eintrag zu Winfuture.de und keine Werbung auf der Seite.

    winfuture.de##body > div:not([id]):not([class])[style*="position"][style*="fixed"], body > div:not([id]):not([class])[style*="position"][style*="absolute"]

  • Google entfernt alle Kaspersky-Apps aus dem Play Store

    • Boersenfeger
    • 8. Oktober 2024 um 13:45

    Isch abe ga kein extra Antivirensoftware :D

  • FF131: Schon wieder funktionieren 2 js-Scripte nicht mehr

    • Boersenfeger
    • 5. Oktober 2024 um 16:46

    Vielen Dank, da das hier bei einigen Scripts vorhanden ist, werde ich es lieber gleich ändern. Wäre dann oben z. B. die Zeilen 480 bis 495
    so zu ändern?

    Code
                                   addEventListener: `
                                        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,
        						addEventListener: `
    Alles anzeigen

    also quasi ein 1 zu 1 Austausch?

  • 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.

Unterstütze uns!

Jährlich (2025)

104,5 %

104,5% (679,10 von 650 EUR)

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