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

  • Meinen aktuellen Firefox vom alten aufs neue Notebook transportieren

    • Boersenfeger
    • 16. April 2025 um 13:48

    Tja, dann ist doch eigentlich alles gut... :)

    Hatte ich überlesen....

  • Meinen aktuellen Firefox vom alten aufs neue Notebook transportieren

    • Boersenfeger
    • 16. April 2025 um 11:21

    Wir wollen doch mal hoffen, dass der Fragende externe Sicherungen seines Profils/alte Festplatte, regelmäßig gefertigt hat. ;)

  • Firefox öffnet immer eine Erweiterung als neuen Tab

    • Boersenfeger
    • 15. April 2025 um 14:21

    Was ist denn unter Startseite eingetragen?

    about:preferences#home

  • Suche_Automatisch_Leeren.uc.js funktioniert nicht mehr

    • Boersenfeger
    • 13. April 2025 um 15:32

    Son Goku was mich betrifft gern geschehen, bin aber auch nur Nutzer!

    Beitrag 31 hat deinen Beitrag auch nur in eine besser lesende Form gebracht. ;)

  • Suche_Automatisch_Leeren.uc.js funktioniert nicht mehr

    • Boersenfeger
    • 13. April 2025 um 14:53

    Teste mal:

    JavaScript
    	/* Suchfeld leeren nach 4 Sekunden */
    	/* Author @aborix */
    
    	setTimeout(function() {
    	    if (location.href !== 'chrome://browser/content/browser.xhtml') return;
    	if (!window.searchbar)
          return;
    	var searchbar = document.getElementById('searchbar')
    	if (!searchbar)
          return;
    	var textbox = searchbar.textbox;
    	var tId;
    	textbox.addEventListener('input', function() {
          clearTimeout(tId);
          tId = setTimeout(function() {
             textbox.value = '';
             document.getElementById('searchbar').hidePopup();
          }, 4000);
    	});
    	}, 0);
    	
    
    /* Suchfeld sofort leeren nach Start der Suche */
    /* Author @aborix */
    /* Angepasst wieder durch Sören und milupo*/
    /*https://www.camp-firefox.de/forum/thema/135558-skript-f%C3%BCr-suchfeld-leeren-nach-start-der-suche/?postID=1212807#post1212807 */
    
    //https://www.camp-firefox.de/forum/thema/136363-offenbar-funktionieren-alle-benutzerskripte-nicht-mehr-im-nightly/?postID=1227649#post1227649
    
    /* Suchfeld automatisch leeren */
    
        (function() {
        const lazy = {};
    
        ChromeUtils.defineESModuleGetters(lazy, {   
        FormHistory: "resource://gre/modules/FormHistory.sys.mjs",
        });
    
        var searchbar = document.getElementById("searchbar");
        
        searchbar.doSearch = function(aData, aWhere, aEngine, aParams, aOneOff) {
        let textBox = this._textbox;
    
          if (aData && !PrivateBrowsingUtils.isWindowPrivate(window) && lazy.FormHistory.enabled) {
            lazy.FormHistory.update({
                op: "bump",
                fieldname: textBox.getAttribute("autocompletesearchparam"),
                value: aData,
            }, {
                handleError(aError) {
                  Cu.reportError("Saving search to form history failed: " + aError.message);
                },
            });
          }
    
          let engine = aEngine || this.currentEngine;
          let submission = engine.getSubmission(aData, null, "searchbar");
          let telemetrySearchDetails = this.telemetrySearchDetails;
          this.telemetrySearchDetails = null;
          if (telemetrySearchDetails && telemetrySearchDetails.index == -1) {
            telemetrySearchDetails = null;
          }
    
          const details = {
            isOneOff: aOneOff,
            isSuggestion: (!aOneOff && telemetrySearchDetails),
            selection: telemetrySearchDetails,
          };
         // BrowserSearch.recordSearchInTelemetry(engine, "searchbar", details);
    
          let params = {
            postData: submission.postData,
          };
          if (aParams) {
            for (let key in aParams) {
              params[key] = aParams[key];
            }
          }
          openTrustedLinkIn(submission.uri.spec, "tab", params);
    
          this.value = '';
              
          this.currentEngine = this.engines ? this.engines[0] : this._engines[0];
        };
    
        }());
    Alles anzeigen
  • Skripte funktionieren nicht mehr

    • Boersenfeger
    • 13. April 2025 um 10:59

    Ja, in der Tat, ich hätte drauf hinweisen müssen und habe dies noch oben eingefügt.:)

  • Skripte funktionieren nicht mehr

    • Boersenfeger
    • 12. April 2025 um 18:44

    Damit wird hier der geänderte CSS aktiv.

  • Skripte funktionieren nicht mehr

    • Boersenfeger
    • 12. April 2025 um 17:53
    Zitat von milupo

    Bei CSS reicht ein einfacher Neustart von Firefox.

    ..oder einmal die Tastenkombi ALT + R ;)

    Edit:

    Mit folgendem Script kann man dies unter anderem erreichen:

    Code
    // ==UserScript==
    // @name           UserCSSLoader
    // @description    CSS-Codes - Styles laden und verwalten
    // @namespace      http://d.hatena.ne.jp/Griever/
    // @author         Griever
    // @include        main
    // @license        MIT License
    // @compatibility  Firefox 116*
    // @charset        UTF-8
    // @version        0.0.4K+
    // @note           Aktualisierungen von BrokenHeart und Speravir - www.camp-firefox.de
    // @note           BrokenHearts Änderung: https://www.camp-firefox.de/forum/thema/138792/?postID=1263814#post1263814
    // @note           Fx92: getURLSpecFromFile() -> getURLSpecFromActualFile()
    // @note           AUTHOR_SHEET-Unterstützung hinzugefügt, wichtig: Dateiendung muss .author.css sein!
    // @note           Version 0.0.4.g ermöglicht "Styles importieren" per Mittelklick und Verwendung
    // @note           eines anderen Dateimanagers (siehe in Konfiguration), ergänzt um einen
    // @note           Parameter für den Dateimanager (vFMParameter in der Konfiguration) von aborix
    // @note           Frei verschiebbare Schaltfläche eingebaut von aborix
    // @note           0.0.4 Remove E4X
    // @note           CSSEntry-Klasse erstellt
    // @note           Style-Test-Funktion überarbeitet (später entfernt)
    // @note           Wenn die Datei gelöscht wurde, CSS beim Neu-Erstellen und Löschen des Menüs abbrechen
    // @note           uc einlesen .uc.css temporäre Korrespondenz zum erneuten Lesen
    // ==/UserScript==
    /****** Bedienungsanleitung ******
    CSS-Ordner im Chrome-Ordner erstellen, CSS-Dateien dort ablegen und speichern.
    Diejenigen, deren Dateiname mit "xul-" beginnen, diejenigen, die mit ".as.css" enden, sind AGENT_SHEET, 
    alle anderen außer USER_SHEET werden gelesen. Da der Inhalt der Datei nicht überprüft wird,
    darauf achten, die Angabe von @namespace nicht zu vergessen!
    CSS-Menü wird zur Menüleiste hinzugefügt.
    Linksklick auf Stil, zum Aktivieren/Deaktivieren,
    Mittelklick auf Stil zum Aktivieren/Deaktivieren, ohne Menü zu schließen,
    Rechtsklick auf Stil zum Öffnen im Editor,
    Strg+Linksklick zum Anzeigen im Dateimanager.
    Die Tastenkombinationen können im Menü eingeblendet werden (bzw. in einem Fall ausgeblendet),
    dazu nach "acceltext" suchen und den Zeilenkommentar "//" entfernen bzw. einfügen.
    Verwenden des in "view_source.editor.path" angegebenen Editors.
    Dateiordner kann in Konfiguration geändert werden.
    **** Anleitung Ende ****/
    (function(){
    /* Konfiguration */
    // Position: als Menü anzeigen = 1, als frei verschiebbare-Schaltfläche = 0
    let position = 0;
    // alternativer Dateimanager, Bsp.:
    // let filemanager = "C:\\Programme\\totalcmd\\TOTALCMD.EXE";
    let filemanager = "H:\\TotalCommander\\TOTALCMD64.EXE";
    // eventuelle Parameter für den alternativen Dateimanager, sonst filemanagerParam = "";
    //let filemanagerParam = "/O /T";//Totalcommander
    let filemanagerParam = "";
    // Unterordner für die CSS-Dateien:
    let cssFolder = "CSS";
    // zusätzlich Chrome-Ordner im Untermenü anzeigen: 1 = ja, 0 = nein
    let showChrome = 1;
    /* Ende Konfiguration */
    ChromeUtils.importESModule("resource://gre/modules/AppConstants.sys.mjs");
    let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
    // Wenn beim Start ein anderes Fenster angezeigt wird (das zweite Fenster), wird es beendet
    let list = Services.wm.getEnumerator("navigator:browser");
    while(list.hasMoreElements()){ if(list.getNext() != window) return; }
    if (window.UCL) {
        window.UCL.destroy();
        delete window.UCL;
    }
    window.UCL = {
        vFileManager: filemanager,
        vFMParameter: filemanagerParam,
        USE_UC: "UC" in window,
        AGENT_SHEET: Ci.nsIStyleSheetService.AGENT_SHEET,
        USER_SHEET : Ci.nsIStyleSheetService.USER_SHEET,
        AUTHOR_SHEET: Ci.nsIStyleSheetService.AUTHOR_SHEET,
        readCSS : {},
        get disabled_list() {
            let obj = [];
            try {
                    obj = this.prefs.getCharPref("disabled_list").split("|");
            } catch(e) {}
            delete this.disabled_list;
            return this.disabled_list = obj;
        },
        get prefs() {
                delete this.prefs;
                return this.prefs = Services.prefs.getBranch("UserCSSLoader.")
        },
        get styleSheetServices(){
                delete this.styleSheetServices;
                return this.styleSheetServices = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
        },
        get FOLDER() {
            let aFolder;
            try {
                // UserCSSLoader.FOLDER verwenden
                let folderPath = this.prefs.getCharPref("FOLDER");
                aFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
                aFolder.initWithPath(folderPath);
            } catch (e) {
                aFolder = Services.dirsvc.get("UChrm", Ci.nsIFile);
                aFolder.appendRelativePath(cssFolder);
            }
            if (!aFolder.exists() || !aFolder.isDirectory()) {
                aFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0664);
            }
            delete this.FOLDER;
            return this.FOLDER = aFolder;
        },
        get CHRMFOLDER() {
            let bFolder;
            try {
                // UserCSSLoader.CHRMFOLDER verwenden
                let CHRMfolderPath = this.prefs.getCharPref("CHRMFOLDER");
                bFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
                bFolder.initWithPath(CHRMfolderPath);
            } catch (e) {
                bFolder = Services.dirsvc.get("UChrm", Ci.nsIFile);
            }
            if (!bFolder.exists() || !bFolder.isDirectory()) {
                bFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0664);
            }
            delete this.CHRMFOLDER;
            return this.CHRMFOLDER = bFolder;
        },
        getFocusedWindow: function() {
            let win = document.commandDispatcher.focusedWindow;
            if (!win || win == window) win = content;
            return win;
        },
        init: function() {
            const cssmenu = $C("menu", {
                id: "usercssloader-menu",
                label: "CSS",
                tooltiptext: "UserCSSLoader\n\nLinksklick: Stylesheets anzeigen\nMittelklick: Styles importieren",
                accesskey: "S",
                //acceltext: "Alt + S",
                onclick: "if (event.button == 1) UCL.rebuild()"
            });
            const menupopup = $C("menupopup", {
                id: "usercssloader-menupopup"
            });
            cssmenu.appendChild(menupopup);
            let menu = $C("menu", {
                label: "Style-Loader-Menü",
                id: "style-loader-menu",
                accesskey: "M",
                //acceltext: "Alt + M"
            });
            menupopup.appendChild(menu);
            menupopup.appendChild($C("menuseparator"));
            let mp = $C("menupopup", { id: "usercssloader-submenupopup" });
            menu.appendChild(mp);
            mp.appendChild($C("menuitem", {
                label: "Styles importieren",
                accesskey: "I",
                //acceltext: "Alt + I",
                oncommand: "UCL.rebuild();"
            }));
            mp.appendChild($C("menuseparator"));
            mp.appendChild($C("menuitem", {
                label: "CSS-Datei erstellen",
                accesskey: "E",
                //acceltext: "Alt + E",
                oncommand: "UCL.create();"
            }));
            mp.appendChild($C("menuitem", {
                label: "CSS-Ordner öffnen",
                accesskey: "O",
                //acceltext: "Alt + O",
                oncommand: "UCL.openFolder();"
            }));
            if (showChrome === 1) {
                mp.appendChild($C("menuitem", {
                    label: "Chrome-Ordner öffnen",
                    accesskey: "X",
                    acceltext: "Alt + X",
                    oncommand: "UCL.openCHRMFolder();"
                }));
            }
            mp.appendChild($C('menuseparator'));
            mp.appendChild($C("menuitem", {
                label: "userChrome.css bearbeiten",
                hidden: false,
                oncommand: "UCL.editUserCSS('userChrome.css');"
            }));
            mp.appendChild($C("menuitem", {
                label: "userContent.css bearbeiten",
                hidden: false,
                oncommand: "UCL.editUserCSS('userContent.css');"
            }));
            menu = $C("menu", {
                label: ".uc.css",
                accesskey: "U",
                //acceltext: "Alt + U",
                hidden: !UCL.USE_UC
            });
            menupopup.appendChild(menu);
            mp = $C("menupopup", { id: "usercssloader-ucmenupopup" });
            menu.appendChild(mp);
            mp.appendChild($C("menuitem", {
                label: "Importieren(.uc.js)",
                oncommand: "UCL.UCrebuild();"
            }));
            mp.appendChild($C("menuseparator", { id: "usercssloader-ucseparator" }));
            CustomizableUI.createWidget({
                id: 'usercssloader-menu-item',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                onBuild: function(aDocument) {
                    let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem');
                    toolbaritem.id = 'usercssloader-menu-item';
                    toolbaritem.className = 'chromeclass-toolbar-additional';
                    return toolbaritem;
                }
            });
            $('usercssloader-menu-item').appendChild(cssmenu);
            if (position === 1) {
                let refNode = $('helpMenu');
                refNode.parentNode.insertBefore(cssmenu, refNode.nextSibling);
            }
            
            $("mainKeyset").appendChild($C("key", {
                id: "usercssloader-rebuild-key",
                oncommand: "UCL.rebuild();",
                key: "R",
                modifiers: "alt",
            }));
            
            this.rebuild();
            this.initialized = true;
            if (UCL.USE_UC) {
                setTimeout(function() {
                    UCL.UCcreateMenuitem();
                }, 1000);
            }
            window.addEventListener("unload", this, false);
        },
        uninit: function() {
            const dis = [];
            for (let x of Object.keys(this.readCSS)) {
                if (!this.readCSS[x].enabled)
                    dis.push(x);
            }
            this.prefs.setCharPref("disabled_list", dis.join("|"));
            window.removeEventListener("unload", this, false);
        },
        destroy: function() {
            var i = document.getElementById("usercssloader-menu");
            if (i) i.parentNode.removeChild(i);
            var i = document.getElementById("usercssloader-rebuild-key");
            if (i) i.parentNode.removeChild(i);
            this.uninit();
        },
        handleEvent: function(event) {
            switch(event.type){
                case "unload": this.uninit(); break;
            }
        },
        rebuild: function() {
            let ext = /\.css$/i;
            let not = /\.uc\.css/i;
            let files = this.FOLDER.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
            while (files.hasMoreElements()) {
                let file = files.getNext().QueryInterface(Ci.nsIFile);
                if (!ext.test(file.leafName) || not.test(file.leafName)) continue;
                let CSS = this.loadCSS(file);
                CSS.flag = true;
            }
            for (let leafName of Object.keys(this.readCSS)) {
                const CSS = this.readCSS[leafName];
                if (!CSS.flag) {
                    CSS.enabled = false;
                    delete this.readCSS[leafName];
                }
                delete CSS.flag;
                this.rebuildMenu(leafName);
            }
            if (this.initialized) {
                if (typeof(StatusPanel) !== "undefined")
                    StatusPanel._label = "Styles importiert";
                else
                    XULBrowserWindow.statusTextField.label = "Styles importieren";
            }
        },
        loadCSS: function(aFile) {
            let CSS = this.readCSS[aFile.leafName];
            if (!CSS) {
                CSS = this.readCSS[aFile.leafName] = new CSSEntry(aFile);
                if (this.disabled_list.indexOf(CSS.leafName) === -1) {
                    CSS.enabled = true;
                }
            } else if (CSS.enabled) {
                CSS.enabled = true;
            }
            return CSS;
        },
        rebuildMenu: function(aLeafName) {
            let CSS = this.readCSS[aLeafName];
            let menuitem = document.getElementById("usercssloader-" + aLeafName);
            if (!CSS) {
                if (menuitem)
                    menuitem.parentNode.removeChild(menuitem);
                return;
            }
            if (!menuitem) {
                menuitem = $C("menuitem", {
                    label : aLeafName,
                    id : "usercssloader-" + aLeafName,
                    class : "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : CSS.SHEET == this.AUTHOR_SHEET? "AUTHOR_SHEET": "USER_SHEET"),
                    type : "checkbox",
                    autocheck : "false",
                    oncommand : "UCL.toggle('"+ aLeafName +"');",
                    onclick : "UCL.itemClick(event);",
                    onmouseup : "if (event.button == 1) event.preventDefault();",
                    tooltiptext : "Linksklick: an/aus, Menü schließt\nMittelklick: an/aus, Menü bleibt offen\nRechtsklick: bearbeiten\nStrg+Linksklick: im Dateimanager anzeigen"
                    });
                document.getElementById("usercssloader-menupopup").appendChild(menuitem);
            }
            menuitem.setAttribute("checked", CSS.enabled);
        },
        toggle: function(aLeafName) {
            let CSS = this.readCSS[aLeafName];
            if (!CSS || event.ctrlKey) return;
            CSS.enabled = !CSS.enabled;
            this.rebuildMenu(aLeafName);
        },
        itemClick: function(event) {
            let label = event.currentTarget.getAttribute("label");
            if (event.button === 0) {
                if (event.ctrlKey) {
                    event.preventDefault();
                    event.stopPropagation();
                    UCL.openFolder(label);
                } else {return;}
            }
                    event.preventDefault();
                    event.stopPropagation();
            if (event.button === 1) {
                this.toggle(label);
            }
            else if (event.button === 2) {
                closeMenus(event.target);
                this.edit(this.getFileFromLeafName(label));
            }
        },
        getFileFromLeafName: function(aLeafName) {
            let f = this.FOLDER.clone();
            f.QueryInterface(Ci.nsIFile); // use appendRelativePath
            f.appendRelativePath(aLeafName);
            return f;
        },
        openFolder:function(label){
            const PathSep = AppConstants.platform === "win" ? "\\" : "/";
            let target= this.FOLDER.path + PathSep + label;
            if (this.vFileManager.length !== 0) {
                let file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
                let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
                let args = [this.vFMParameter,target];
                file.initWithPath(this.vFileManager);
                process.init(file);
                // Verzeichnis mit anderem Dateimanager öffnen
                process.run(false, args, args.length);
            } else {
                // Verzeichnis mit Dateimanager des Systems öffnen
                this.FOLDER.launch();
            }
        },
        openCHRMFolder:function(){
            if (this.vFileManager.length !== 0) {
                let file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
                let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
                let args = [this.vFMParameter,this.CHRMFOLDER.path];
                file.initWithPath(this.vFileManager);
                process.init(file);
                // Verzeichnis mit anderem Dateimanager öffnen
                process.run(false, args, args.length);
            } else {
                // Verzeichnis mit Dateimanager des Systems öffnen
                this.CHRMFOLDER.launch();
            }
        },
        editUserCSS: function(aLeafName) {
            let file = Services.dirsvc.get("UChrm", Ci.nsIFile);
            file.appendRelativePath(aLeafName);
            this.edit(file);
        },
        edit: function(aFile) {
            let editor = Services.prefs.getCharPref("view_source.editor.path");
            if (!editor) return alert("Unter about:config den vorhandenen Schalter:\n view_source.editor.path mit dem Editorpfad ergänzen");
            try {
                let UI = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
                UI.charset = window.navigator.platform.toLowerCase().indexOf("win") >= 0? "Shift_JIS": "UTF-8";
                let path = UI.ConvertFromUnicode(aFile.path);
                let app = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
                app.initWithPath(editor);
                let process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
                process.init(app);
                process.run(false, [path], 1);
            } catch (e) {}
        },
        create: function(aLeafName) {
            if (!aLeafName) aLeafName = prompt("Name des Styles", dateFormat(new Date(), "%Y_%m%d_%H%M%S"));
            if (aLeafName) aLeafName = aLeafName.replace(/\s+/g, " ").replace(/[\\/:*?\"<>|]/g, "");
            if (!aLeafName || !/\S/.test(aLeafName)) return;
            if (!/\.css$/.test(aLeafName)) aLeafName += ".css";
            let file = this.getFileFromLeafName(aLeafName);
            this.edit(file);
        },
        UCrebuild: function() {
            let re = /^file:.*\.uc\.css(?:\?\d+)?$/i;
            let query = "?" + new Date().getTime();
            Array.slice(document.styleSheets).forEach(function(css){
                if (!re.test(css.href)) return;
                if (css.ownerNode) {
                    css.ownerNode.parentNode.removeChild(css.ownerNode);
                }
                let pi = document.createProcessingInstruction('xml-stylesheet','type="text/css" href="'+ css.href.replace(/\?.*/, '') + query +'"');
                document.insertBefore(pi, document.documentElement);
            });
            UCL.UCcreateMenuitem();
        },
        UCcreateMenuitem: function() {
            let sep = $("usercssloader-ucseparator");
            let popup = sep.parentNode;
            if (sep.nextSibling) {
                let range = document.createRange();
                range.setStartAfter(sep);
                range.setEndAfter(popup.lastChild);
                range.deleteContents();
                range.detach();
            }
            let re = /^file:.*\.uc\.css(?:\?\d+)?$/i;
            Array.slice(document.styleSheets).forEach(function(css) {
                if (!re.test(css.href)) return;
                let fileURL = decodeURIComponent(css.href).split("?")[0];
                let aLeafName = fileURL.split("/").pop();
                let m = $C("menuitem", {
                    label : aLeafName,
                    tooltiptext : fileURL,
                    id : "usercssloader-" + aLeafName,
                    type : "checkbox",
                    autocheck : "false",
                    checked : "true",
                    oncommand : "if (!event.ctrlKey) {this.setAttribute('checked', !(this.css.disabled = !this.css.disabled));}",
                    onmouseup : "if(event.button === 1) event.preventDefault();",
                    onclick : "UCL.UCItemClick(event);"
                });
                m.css = css;
                popup.appendChild(m);
            });
        },
        UCItemClick: function(event) {
            if (event.button === 0) return;
            event.preventDefault();
            event.stopPropagation();
            if (event.button === 1) {
                event.target.doCommand();
            }
            else if (event.button === 2) {
                closeMenus(event.target);
                let fileURL = event.currentTarget.getAttribute("tooltiptext");
                let file = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromActualFile(fileURL);
                this.edit(file);
            }
        },
    };
    function CSSEntry(aFile) {
        this.path = aFile.path;
        this.leafName = aFile.leafName;
        this.lastModifiedTime = 1;
        this.SHEET = /^xul-|\.as\.css$/i.test(this.leafName) ? 
            Ci.nsIStyleSheetService.AGENT_SHEET:
            /\.author\.css$/i.test(this.leafName)?
            Ci.nsIStyleSheetService.AUTHOR_SHEET:
            Ci.nsIStyleSheetService.USER_SHEET;
    }
    CSSEntry.prototype = {
        sss: Components.classes["@mozilla.org/content/style-sheet-service;1"]
                .getService(Components.interfaces.nsIStyleSheetService),
        _enabled: false,
        get enabled() {
            return this._enabled;
        },
        set enabled(isEnable) {
            let aFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile)
            aFile.initWithPath(this.path);
            let isExists = aFile.exists(); // true, wenn die Datei existiert
            let lastModifiedTime = isExists ? aFile.lastModifiedTime : 0;
            let isForced = this.lastModifiedTime != lastModifiedTime; // true, wenn es eine Änderung in der Datei gibt
            let fileURL = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromActualFile(aFile);
            let uri = Services.io.newURI(fileURL, null, null);
            if (this.sss.sheetRegistered(uri, this.SHEET)) {
                // Wenn diese Datei bereits gelesen wurde
                if (!isEnable || !isExists) {
                    this.sss.unregisterSheet(uri, this.SHEET);
                }
                else if (isForced) {
                    // Nach Stornierung erneut einlesen
                    this.sss.unregisterSheet(uri, this.SHEET);
                    this.sss.loadAndRegisterSheet(uri, this.SHEET);
                }
            } else {
                // Datei wurde nicht gelesen
                if (isEnable && isExists) {
                    this.sss.loadAndRegisterSheet(uri, this.SHEET);
                }
            }
            if (this.lastModifiedTime !== 1 && isEnable && isForced) {
                log(this.leafName + " wurde aktualisiert");
            }
            this.lastModifiedTime = lastModifiedTime;
            return this._enabled = isEnable;
        },
    };
    UCL.init();
    function $(id) { return document.getElementById(id); }
    function $A(arr) { return Array.slice(arr); }
    function $C(name, attr) {
        let el = document.createXULElement(name);
        if (attr) Object.keys(attr).forEach(function(n) {
            if(n === "oncommand") {
                el.addEventListener('command', function(event) { Function(attr[n])(); });
            }
            else if(n === "onclick") {
                el.addEventListener('click', function(event) { Function(attr[n])(); });
            }
            else if(n === "onmouseup") {
                el.addEventListener('mouseup', function(event) { Function(attr[n])(); });
            }
            else {
                el.setAttribute(n, attr[n]); 
            }
        });
        return el;
    }
    function dateFormat(date, format) {
        format = format.replace("%Y", ("000" + date.getFullYear()).substr(-4));
        format = format.replace("%m", ("0" + (date.getMonth()+1)).substr(-2));
        format = format.replace("%d", ("0" + date.getDay()).substr(-2));
        format = format.replace("%H", ("0" + date.getHours()).substr(-2));
        format = format.replace("%M", ("0" + date.getMinutes()).substr(-2));
        format = format.replace("%S", ("0" + date.getSeconds()).substr(-2));
        return format;
    }
    function log() { Application.console.log(Array.slice(arguments)); }
    })();
    Alles anzeigen

    Ab Zeile 41 sind ggf. Änderungen einzufügen.

  • extras_config_menu.uc.js in Fx 139 keine Funktion mehr

    • Boersenfeger
    • 11. April 2025 um 12:18

    Ich hab schon mal die user.js vorbereitet und wollte den Schalter bereits korrekt setzen im auskommentierten String. :)

    Edit: Danke Sören Hentzschel

  • Der Glückwunsch-Thread

    • Boersenfeger
    • 11. April 2025 um 12:12

    Büssen Alles Gute zum Geburtstag und vor allem viel Gesundheit wünscht Boersenfeger :)

  • extras_config_menu.uc.js in Fx 139 keine Funktion mehr

    • Boersenfeger
    • 11. April 2025 um 12:10

    Wie muss dann der Schalter sein? 1 oder 0, oder true / false?

  • Schrift im Nightly anders als im Default-Firefox

    • Boersenfeger
    • 10. April 2025 um 16:05

    Das war nicht so, ich habe aber jetzt dort einen Eintrag mit dem Wert "0" erstellt, das half... 8o

  • MozBackup wird weiterentwickelt

    • Boersenfeger
    • 10. April 2025 um 15:28

    Da hast du recht... :thumbup:

  • Sicherheitslücke in ESET Software

    • Boersenfeger
    • 10. April 2025 um 15:13

    Dann lösch es, ich kann das ja jetzt nicht mehr...

    Habe es nicht gelesen aber auch nicht danach gesucht... :sleeping:

  • Sicherheitslücke in ESET Software

    • Boersenfeger
    • 10. April 2025 um 15:05

    Nutzer sollten updaten oder besser gleich die Sache deinstallieren..
    Der Defender und vernünftiger Umgang reicht ja. ;)

    ToddyCat: Malware nutzt Sicherheitsleck in Antivirensoftware
    Statt Systeme vor Malware zu schützen, hat eine Lücke in Eset-Virenschutz zur Ausführung von Schadsoftware geführt.
    www.heise.de
  • MozBackup wird weiterentwickelt

    • Boersenfeger
    • 10. April 2025 um 14:57

    Ich bin mit meinem verwendeten Script voll zufrieden:

    Ggf. für Mitlesende

    JavaScript
    // ==UserScript==
    // @name           BackupProfile.uc.js
    // @namespace      BackupProfile.github.com
    // @description    Schaltfläche zum Sichern des Firefoxprofils
    // @charset        UTF-8
    // @author         ywzhaiqi、defpt
    // @version        v2023.07.02 FF 115.*
    // @note           Vorlage Script von ywzhaiqi (+ Mischung aus diversen Varianten aus dem Fuchsforum 1.11.21)
    // @note           Sicherungsdatei enthaelt auch Profilname
    // @note 		   FileUtils.getFile ersetzt 2.7.23
    // @reviewURL      http://bbs.kafan.cn/thread-1758785-1-1.html
    (function () {
    	    if (location.href !== 'chrome://browser/content/browser.xhtml') return;
    	ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
    	CustomizableUI.createWidget({
    		id : "Backup-button",
    		defaultArea : CustomizableUI.AREA_NAVBAR,
    		label : "Profilsicherung",
    		tooltiptext : "Sichern der aktuellen Konfiguration",
    		onClick: function(){
    			// Speicherort - Ordner festlegen - Sichern funktioniert nur wenn Speicherort- bzw. Ordner vorhanden ist!!
    			var path = "G:\\Boersenfeger\\Sicherungen\\Firefox\\Firefox Sicherung\\Nightly\\";
    			// var path = "";
    			// Ausschlussliste
    			var excludes = 'bookmarkbackups *cache* crashes fftmp *healthreport* minidumps safebrowsing *webapps* saved-telemetry-pings *thumbnails* *session* *Telemetry* *hotfix* *.sqlite-shm *.sqlite-wal *.bak parent.lock blocklist.xml content-prefs.sqlite directoryLinks.json mimeTypes.rdf compatibility.ini parent.lock formhistory.sqlite';
    
    			if (!path) {
    				var nsIFilePicker = Ci.nsIFilePicker;
    				var FP = Cc['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
    				FP.init(window, 'Sicherungspfad wählen', nsIFilePicker.modeGetFolder);
    
    				if (FP.show() == nsIFilePicker.returnOK) {
    					path = FP.file.path;
    				} else {
    					return false;
    				}
    			}
    
    			excludes = excludes.replace(/\./g, '\\.').replace(/\*/g, '.*').replace(/\s+/g, '|');
    			excludes = new RegExp(excludes, 'i');
    
    			var zw = Cc['@mozilla.org/zipwriter;1'].createInstance(Ci.nsIZipWriter);
    			var pr = {PR_RDONLY: 0x01, PR_WRONLY: 0x02, PR_RDWR: 0x04, PR_CREATE_FILE: 0x08, PR_APPEND: 0x10, PR_TRUNCATE: 0x20, PR_SYNC: 0x40, PR_EXCL: 0x80};
    			var fu = ChromeUtils.importESModule('resource://gre/modules/FileUtils.sys.mjs').FileUtils;
    			var dir = new FileUtils.File(PathUtils.join(PathUtils.profileDir,[]));
    
    			let d = new Date();
    			d = d.getDate() + '.' + (d.getMonth() + 1).toString().padStart(2, '0') + '.' + d.getFullYear().toString().padStart(2, '0')  + '  '  + d.getHours().toString().padStart(2, '0') + '\uA789' + d.getMinutes().toString().padStart(2, '0') + '\uA789' + d.getSeconds().toString().padStart(2, '0');
    
    			// Die folgende Zeile formt den Archivnamen
                var archiveName = 'Profil Nightly ' + ' ' + d + '.zip';  /* 'd' ersetzt 'localnow' */
    
    			var xpi = fu.File(path + '\\' + archiveName);
    
    			zw.open(xpi, pr.PR_RDWR | pr.PR_CREATE_FILE | pr.PR_TRUNCATE);
    			var dirArr = [dir];
    			for (var i=0; i<dirArr.length; i++) {
    				var dirEntries = dirArr[i].directoryEntries;
    				while (dirEntries.hasMoreElements()) {
    					var entry = dirEntries.getNext().QueryInterface(Ci.nsIFile);
    					if (entry.path == xpi.path) {
    						continue;
    					}
    
    					if (entry.isDirectory()) {
    					   dirArr.push(entry);
    					}
    
    					var relPath = entry.path.replace(dirArr[0].path, '');
    					if (relPath.match(excludes)) {
    						continue;
    					}
    
    					var saveInZipAs = relPath.substr(1);
    					saveInZipAs = saveInZipAs.replace(/\\/g,'/');
    					// Konfigurationsdateien können gesperrt werden
    					try {
    						zw.addEntryFile(saveInZipAs, Ci.nsIZipWriter.COMPRESSION_FASTEST, entry, false);
    					} catch (e) {}
    				}
    			}
    			zw.close();
    			alert('Die aktuelle Konfiguration wurde als:\n'+ archiveName +'\ngesichert in:\n' + path);
    
    			function alert(aString, aTitle) {
    				Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService).showAlertNotification("", aTitle, aString, false, "", null);
    			}
    
    			function bupgetCurrentProfileName(){
    				function readFile(aFile){
    					var stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);    stream.init(aFile, 0x01, 0, 0);
    					var cvstream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
    					cvstream.init(stream, "UTF-8", 1024, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
    					var content = "", data = {};
    					while (cvstream.readString(4096, data)) {
    						content += data.value;
    					}
    					cvstream.close();
    					return content.replace(/\r\n?/g, "\n");
    				}
    				var PrefD = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("PrefD", Components.interfaces.nsIFile);
    				var ini = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("AppRegD", Components.interfaces.nsIFile);
    
    				ini.append("profiles.ini");
    				var ini = readFile(ini);
    				var profiles = ini.match(/Name=.+/g);
    				var profilesD = ini.match(/Path=.+/g);
    				for ( var i = 0; i < profiles.length;i++) {
    				if ((profilesD[i]+"$").indexOf(PrefD.leafName+"$") >= 0) {
    					profiles[i].match(/Name=(.+)$/);
    					return RegExp.$1;
    					}
    				}
    				return null;
    			}
    		},
    	});
    
    	var cssStr = '@-moz-document url("chrome://browser/content/browser.xhtml"){'
    		 + '#Backup-button .toolbarbutton-icon {'
    		 + 'list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1%2B%2FAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8xMS8wOGGVBZQAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAABxklEQVQ4ja2UMUgbURjHfxeSFBzuBEuCkkAgIA5JDdzWohVnQe3UpRDE2UXpKKXdWro4ixlcdNJAydxiyHZkCIKIOEnLpZQSRFFz%2Bjqk73nvuDtb2j883nv%2F73u%2F%2B%2B69ewf%2FWUZgbgEFYDgiPw18B86An8DtQw%2BYdF1XRLVGoyGEEKJara4Bj0MKIhGYDxuGQVSTqtVqH0ql0uzvNzLigCQSicjmeZ7K63Q6u5VKZRoYigXGVWhZlpbbbrfrwKjfS4ZVGKVCoUCz2aTX65FOp6WdA04igf69CsqyLMrlctAWsRXGAf9EavXyFELEZT4A2TwYsLQKF%2BYXAJhb3VPep4%2BLzK3uqd7vS9Xr%2B2qsAW9u4eyoxcZSFoCVLZfTwxaA6v2xjaUsuYmnWrU60IOr%2FmD8etvl%2Fausikl%2FZcsFULEbD02hwPUdl7cvs1qiBAb9eOCdwdjEM2AABdh88wJA%2BbK%2FX6MDtVPmHyRPOfjRPfc87%2FPfgJLJ5AzwRc0BbNseB8a63e6TuKsXpnw%2BP5nJZAzgq%2BM4x3IPzwFM07woFovv%2Bv3%2BUDTiXqlU6tI0zQs%2FI%2FSe2bYt%2FyCPgJFA%2BAdwDeA4zrfg2l%2BwUqCoC1F3YQAAAABJRU5ErkJggg%3D%3D)'
    		 + '}}';
    	var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
    	var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
    	sss.loadAndRegisterSheet(ios.newURI("data:text/css;base64," + btoa(cssStr), null, null), sss.USER_SHEET);
    })();
    Alles anzeigen

    Zeile 22 und 25 ist dann nach Gusto noch zu ändern

  • US-Regierung streicht Fördergelder für Mozilla Foundation in Millionenhöhe

    • Boersenfeger
    • 10. April 2025 um 14:46

    Irgendwer sollte die durch Insiderhandel abgeschöpften Gewinne bei Trumpvertrauten einsammeln und an Mozilla weiterleiten.

    Hintergrund

  • Schrift im Nightly anders als im Default-Firefox

    • Boersenfeger
    • 9. April 2025 um 18:09

    Hier sieht es nun in beiden wieder normal aus. Allerdings kommt der Haken immer wieder.. ich warte jetzt mal ab....

  • Schrift im Nightly anders als im Default-Firefox

    • Boersenfeger
    • 9. April 2025 um 17:09

    Wie sie im 137 ist

  • Schrift im Nightly anders als im Default-Firefox

    • Boersenfeger
    • 9. April 2025 um 15:23

    Beide Einstellungen sind gleich, das hatte ich nicht umsonst oben geschrieben. Allerdings behält der Dialog im Nightly nicht die Einstellung OHNE das Häkchen gesetzt zu haben. Ich stelle dies ein, speichere über OK ab.

    Ich rufe eine Webseite, (von daher ist dies nicht nur auf den Webseiten des Forums, sondern auf allen so), via STG+UMSCHALT+R unter Umgehung des Caches neu auf und sehe, dass KEINE Änderung eingetreten ist. Öffne ich dann den Schriften-Erweitert-Dialog in Einstellungen, ist der Haken wieder gesetzt.

Unterstütze uns!

Jährlich (2026)

32,8 %

32,8% (213,31 von 650 EUR)

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