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

Beiträge von sam2008

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

    • sam2008
    • 21. März 2025 um 07:45

    Moin Sören,

    herzlichen Dank, das hat funktioniert.

    Mfg

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

    • sam2008
    • 21. März 2025 um 06:57

    Moin milupo ,

    ich habe gemacht aber habe ich immer noch mit Restore aber Backup funktioniert.

    .Wenn ich "Bookmarks Restore" klicke, öffnet Fenster und ich wähle eine Backup Datei aber dann bekomme ich diese Fehler für diese Teil in Code:

    JavaScript
                // confirm ok to delete existing bookmarks
               if (!Services.prompt.confirm(null,
                      PlacesUIUtils.getString("bookmarksRestoreAlertTitle"), // <=== das  ist Line 100
                      PlacesUIUtils.getString("bookmarksRestoreAlert")))
                 return;



    Mfg

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

    • sam2008
    • 20. März 2025 um 12:51

    ich habe so das Code geändert, jetzt wenn ich Bookmarks von eine Backup Datei wiederherstellen klick dann kommt Error:

    Code
    Uncaught TypeError: PlacesUIUtils.getString is not a function
    Uncaught TypeError: PlacesUIUtils.getString is not a function
        fpCallback file:///C:/Users/sam2008/AppData/Roaming/Mozilla/Firefox/Profiles/vi5nw3kj.default/chrome/bookmarks_backup_restore_button.uc.js:76
    
    bookmarks_backup_restore_button.uc.js:76:34
    JavaScript
    (function() {
    try {
     //Components.utils.import("resource:///modules/CustomizableUI.jsm");
     ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
     var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
     var RESTORE_FILEPICKER_FILTER_EXT = "*.json;*.jsonlz4";
     
     //ChromeUtils.import("resource://gre/modules/Services.jsm");
     //ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
     //ChromeUtils.defineModuleGetter(this, "BookmarkJSONUtils", "resource://gre/modules/BookmarkJSONUtils.jsm");
     //ChromeUtils.defineModuleGetter(this, "PlacesBackups", "resource://gre/modules/PlacesBackups.jsm");
    const lazy = {};
    ChromeUtils.defineESModuleGetters(lazy, { MigrationUtils: "resource:///modules/MigrationUtils.sys.mjs", });
    ChromeUtils.defineESModuleGetters(lazy, { BookmarkJSONUtils: "resource://gre/modules/BookmarkJSONUtils.sys.mjs", });
    ChromeUtils.defineESModuleGetters(lazy, { PlacesBackups: "resource://gre/modules/PlacesBackups.sys.mjs", });
    ChromeUtils.defineESModuleGetters(lazy, { PlacesUtils: "resource://gre/modules/PlacesUIUtils.sys.mjs",});
    
     CustomizableUI.createWidget({
       id: "uc-bookmarks_backup", // button id
       defaultArea: CustomizableUI.AREA_NAVBAR,
       removable: true,
       label: "Bookmarks Backup", // button title
       tooltiptext: "Bookmarks Backup", // tooltip title
       onClick: function(event) {
         
         if(event.button=='0') {
           let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
           let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
           let fpCallback = function fpCallback_done(aResult) {
             if (aResult != Ci.nsIFilePicker.returnCancel) {
               // There is no OS.File version of the filepicker yet (Bug 937812).
               lazy.PlacesBackups.saveBookmarksToJSONFile(fp.file.path)
                            .catch(Cu.reportError);
             }
           };
            fp.init(BrowsingContext.getFromWindow(window), "json", Ci.nsIFilePicker.modeSave);
           fp.appendFilter("json",
                           RESTORE_FILEPICKER_FILTER_EXT);
           fp.defaultString = lazy.PlacesBackups.getFilenameForDate();
           fp.defaultExtension = "json";
           fp.displayDirectory = backupsDir;
           fp.open(fpCallback);
         }
       },
       onCreated: function(button) {
         return button;
       }
           
     });
     
     CustomizableUI.createWidget({
       id: "uc-bookmarks_restore", // button id
       defaultArea: CustomizableUI.AREA_NAVBAR,
       removable: true,
       label: "Bookmarks Restore", // button title
       tooltiptext: "Bookmarks Restore", // tooltip title
       onClick: function(event) {
         
         if(event.button=='0') {
           let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
           let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
           let fpCallback = aResult => {
             if (aResult != Ci.nsIFilePicker.returnCancel) {
               
               // check file extension
               if (!fp.file.path.toLowerCase().endsWith("json") &&
                   !fp.file.path.toLowerCase().endsWith("jsonlz4")) {
                 this._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreFormatError"));
                 return;
               }
               // confirm ok to delete existing bookmarks
               if (!Services.prompt.confirm(null,
                      PlacesUIUtils.getString("bookmarksRestoreAlertTitle"),
                      PlacesUIUtils.getString("bookmarksRestoreAlert")))
                 return;
               (async function() {
                 try {
                   await lazy.BookmarkJSONUtils.importFromFile(fp.file.path, {
                     replace: true,
                   });
                 } catch (ex) {
                   PlacesOrganizer._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreParseError"));
                 }
               })();
               
               
             }
           };
    
            fp.init(BrowsingContext.getFromWindow(window), "json", Ci.nsIFilePicker.modeOpen);
           fp.appendFilter("json",
                           RESTORE_FILEPICKER_FILTER_EXT);
           fp.appendFilters(Ci.nsIFilePicker.filterAll);
           fp.displayDirectory = backupsDir;
           fp.open(fpCallback);
         }
       },
       onCreated: function(button) {
         return button;
       }
           
     });
     
     // style button icon
     var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
        \
          #uc-bookmarks_backup .toolbarbutton-icon {\
            list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
            fill: red; /* icon color name/code */\
          }\
          #uc-bookmarks_restore .toolbarbutton-icon {\
            list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
            fill: green; /* icon color name/code */\
          }\
        \
     '), null, null);
     
     sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
     
    } catch (e) {
       Components.utils.reportError(e);
    };
    })();
    Alles anzeigen
  • userChrome.js Scripte für den Fuchs (Diskussion)

    • sam2008
    • 20. März 2025 um 11:49

    milupo ,

    danke, jetzt alles funktioniert außer Backup Button. Wenn ich Backup Button klicke, passiert gar nicht!!

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

    • sam2008
    • 20. März 2025 um 11:26

    Hallo 2002Andreas , Hallo milupo ,

    danke, ich habe gemacht und jetzt "Restart.Toolbar.uc.js" funktioniert aber "bookmarks_backup_restore_button.uc.js" nicht.

    Mfg

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

    • sam2008
    • 20. März 2025 um 10:56

    Moin Zusammen,

    mit Firefox 137 Version wird nicht Backup, Restore und neue Start in Toolbar angezeigt, kann bitte jemand sagen wo das Problem ist?



    bookmarks_backup_restore_button.uc.js

    JavaScript
    (function() {
    try {
     //Components.utils.import("resource:///modules/CustomizableUI.jsm");
     ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
     var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
     var RESTORE_FILEPICKER_FILTER_EXT = "*.json;*.jsonlz4";
     
     //ChromeUtils.import("resource://gre/modules/Services.jsm");
     ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
     ChromeUtils.defineModuleGetter(this, "BookmarkJSONUtils", "resource://gre/modules/BookmarkJSONUtils.jsm");
     ChromeUtils.defineModuleGetter(this, "PlacesBackups", "resource://gre/modules/PlacesBackups.jsm");
     
     CustomizableUI.createWidget({
       id: "uc-bookmarks_backup", // button id
       defaultArea: CustomizableUI.AREA_NAVBAR,
       removable: true,
       label: "Bookmarks Backup", // button title
       tooltiptext: "Bookmarks Backup", // tooltip title
       onClick: function(event) {
         
         if(event.button=='0') {
           let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
           let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
           let fpCallback = function fpCallback_done(aResult) {
             if (aResult != Ci.nsIFilePicker.returnCancel) {
               // There is no OS.File version of the filepicker yet (Bug 937812).
               PlacesBackups.saveBookmarksToJSONFile(fp.file.path)
                            .catch(Cu.reportError);
             }
           };
            fp.init(BrowsingContext.getFromWindow(window), "json", Ci.nsIFilePicker.modeSave);
           fp.appendFilter("json",
                           RESTORE_FILEPICKER_FILTER_EXT);
           fp.defaultString = PlacesBackups.getFilenameForDate();
           fp.defaultExtension = "json";
           fp.displayDirectory = backupsDir;
           fp.open(fpCallback);
         }
       },
       onCreated: function(button) {
         return button;
       }
           
     });
     
     CustomizableUI.createWidget({
       id: "uc-bookmarks_restore", // button id
       defaultArea: CustomizableUI.AREA_NAVBAR,
       removable: true,
       label: "Bookmarks Restore", // button title
       tooltiptext: "Bookmarks Restore", // tooltip title
       onClick: function(event) {
         
         if(event.button=='0') {
           let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
           let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
           let fpCallback = aResult => {
             if (aResult != Ci.nsIFilePicker.returnCancel) {
               
               // check file extension
               if (!fp.file.path.toLowerCase().endsWith("json") &&
                   !fp.file.path.toLowerCase().endsWith("jsonlz4")) {
                 this._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreFormatError"));
                 return;
               }
               // confirm ok to delete existing bookmarks
               if (!Services.prompt.confirm(null,
                      PlacesUIUtils.getString("bookmarksRestoreAlertTitle"),
                      PlacesUIUtils.getString("bookmarksRestoreAlert")))
                 return;
               (async function() {
                 try {
                   await BookmarkJSONUtils.importFromFile(fp.file.path, {
                     replace: true,
                   });
                 } catch (ex) {
                   PlacesOrganizer._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreParseError"));
                 }
               })();
               
               
             }
           };
    
            fp.init(BrowsingContext.getFromWindow(window), "json", Ci.nsIFilePicker.modeOpen);
           fp.appendFilter("json",
                           RESTORE_FILEPICKER_FILTER_EXT);
           fp.appendFilters(Ci.nsIFilePicker.filterAll);
           fp.displayDirectory = backupsDir;
           fp.open(fpCallback);
         }
       },
       onCreated: function(button) {
         return button;
       }
           
     });
     
     // style button icon
     var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
        \
          #uc-bookmarks_backup .toolbarbutton-icon {\
            list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
            fill: red; /* icon color name/code */\
          }\
          #uc-bookmarks_restore .toolbarbutton-icon {\
            list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
            fill: green; /* icon color name/code */\
          }\
        \
     '), null, null);
     
     sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
     
    } catch (e) {
       Components.utils.reportError(e);
    };
    })();
    Alles anzeigen


    Restart.Toolbar.uc.js

    JavaScript
    (function() {
    try {
     Components.utils.import("resource:///modules/CustomizableUI.jsm");
     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 = "Neu Starten";
    
     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=='1') { // left/middle-click - restart
            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("'+icon+'"); /* icon / path to icon */ \
            transform: scaleX(-1); /* icon mirroring */\
            fill: red; /* icon color name/code */\
          }\
        \
     '), null, null);
     
     sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
     
    } catch (e) {
        Components.utils.reportError(e);
    };
    })();
    Alles anzeigen


    Vielen Dank

    Mfg

  • OpenH264 Sicherheit Lücke

    • sam2008
    • 24. Februar 2025 um 13:33

    vielen Dank.

    Mfg

  • OpenH264 Sicherheit Lücke

    • sam2008
    • 24. Februar 2025 um 13:24

    Hallo Sören,

    1- Nein

    2- Ja (wir haben Users dass benutzen)

    Mfg

  • OpenH264 Sicherheit Lücke

    • sam2008
    • 24. Februar 2025 um 12:14

    Hallo Zusammen,

    wegen diese Information, wie kann ich OpenH264-Videocodec von 2.3.2 auf Version 2.6 updaten?

    OpenH264-Sicherheitslücke: Schadcode über Videos im Browser
    Durch eine Sicherheitslücke in Ciscos Video-Codec OpenH264 können Angreifer Schadcode einschmuggeln. Auch Firefox ist gefährdet.
    www.heise.de

    Vielen Dank

    Mfg

  • Unterschiedliche Schriftart

    • sam2008
    • 25. November 2024 um 11:09

    Hallo Andreas,

    gerne geschehen :)

    Mfg

  • Unterschiedliche Schriftart

    • sam2008
    • 25. November 2024 um 11:02

    Moin Andreas,


    hier ist PowerShell Skript:

    Code
    # PowerShell-Skript zum Deinstallieren von "DejaVuSans"-Schriftarten auf Windows 11
    # Dieses Skript muss als Administrator ausgeführt werden
    
    # Pfad zum Fonts-Verzeichnis
    $fontsDirectory = "$env:windir\Fonts"
    
    # Liste aller installierten Schriftarten erhalten
    $installedFonts = Get-ChildItem -Path $fontsDirectory -Include "*DejaVu*" -Recurse
    
    if ($installedFonts.Count -eq 0) {
        Write-Host "Keine 'DejaVuSans'-Schriftarten im Fonts-Verzeichnis gefunden."
    } else {
        foreach ($font in $installedFonts) {
            try {
                Write-Host "Lösche Schriftartdatei: $($font.FullName)"
                Remove-Item -Path $font.FullName -Force
            } catch {
                Write-Host "Fehler beim Löschen von $($font.FullName): $_"
            }
        }
    }
    
    # Schriftarten aus der Registrierung entfernen
    $fontRegKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
    $fontsInRegistry = Get-ItemProperty -Path $fontRegKeyPath
    
    foreach ($font in $fontsInRegistry.PSObject.Properties) {
        if ($font.Name -like "*DejaVu*") {
            try {
                Write-Host "Lösche Registrierungseintrag für Schriftart: $($font.Name)"
                Remove-ItemProperty -Path $fontRegKeyPath -Name $font.Name -Force
            } catch {
                Write-Host "Fehler beim Löschen des Registrierungseintrags $($font.Name): $_"
            }
        }
    }
    
    # Schriftarten-Cache aktualisieren
    Write-Host "Aktualisiere den Schriftarten-Cache..."
    & rundll32.exe shell32.dll,Control_RunDLL fonts
    Alles anzeigen

    Mfg

  • Firefox Sicherheit Frage

    • sam2008
    • 11. Oktober 2024 um 09:49

    Moin Sören,

    herzlichen Dank. Leider Chefetage will nicht warten.

    Mfg

  • Firefox Sicherheit Frage

    • sam2008
    • 10. Oktober 2024 um 14:32
    Zitat von Sören Hentzschel
    Zitat von sam2008

    Soll ich selber erstellen?

    Nein. Wenn Firefox ESR 128 diese Option noch nicht kennt, bringt es auch nichts, diese Option zu erstellen.

    Hallo Sören,

    ich habe fast gedacht.

    Hast du meine Extension gesehen?

    Findest du gut gegen diese Sicherheit Lücke?

    Vielen Dank

    Mfg

  • Firefox Sicherheit Frage

    • sam2008
    • 10. Oktober 2024 um 07:43

    Moin Sören,

    vielen Dank.

    In Firefox 128.3.1 ESR gibt es nicht network.socket.ip_addr_any.disabled Parameter. Soll ich selber erstellen?

    Wenn ja und auf true erstellen, wird diese Sicherheit Lücke gelöst oder Firefox hat immer noch diese Lücke?

    Hier ist meine Extension Code.

    manifest.json Datei:

    Code
    {
      "manifest_version": 2,
      "name": "URL/IP Anfrage von 0.0.0.0 zu 127.0.0.1 Umleiter",
      "description": "Leitet alle Anfragen von 0.0.0.0 zu 127.0.0.1 um",
      "version": "1.0",
      "browser_specific_settings": {
      "gecko": {
        "id": "umleitung@intern.local",
        "strict_min_version": "128.0"
        }
      },
      "permissions": [
        "webRequest",
        "webRequestBlocking",
        "*://*/*"
      ],
       "icons": {
        "16": "icons/icon.png",
        "48": "icons/icon.png",
        "128": "icons/icon.png"
      },  
      "background": {
        "scripts": ["background.js"]
      }
    }
    Alles anzeigen

    background.js Datei:

    Code
    chrome.webRequest.onBeforeRequest.addListener(
      function(details) {
        if (details.url.includes("0.0.0.0")) {
          const newUrl = details.url.replace("0.0.0.0", "127.0.0.1");
          console.log("Redirecting request to:", newUrl);
          return { redirectUrl: newUrl };
        }
        return { cancel: false };
      },
      { urls: ["<all_urls>"] },
      ["blocking"]
    );
    Alles anzeigen


    Mfg

  • Firefox Sicherheit Frage

    • sam2008
    • 9. Oktober 2024 um 18:15

    Hallo Sören,

    vielen Dank.

    Ich habe eine Frage, wenn ich eine Extension schreibe, das alle Request von 0.0.0.0 zu 127.0.0.1 weiterleiten, wird diese Probleme behoben oder nicht?

    Mfg

  • Firefox Sicherheit Frage

    • sam2008
    • 9. Oktober 2024 um 11:41

    Hallo Zusammen,

    gibt es eine Info von Mozilla wegen diese Sicherheit Probleme?

    0.0.0.0 Day: Exploiting Localhost APIs From the Browser

    Vielen Dank

    Mfg

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

    • sam2008
    • 25. Juli 2024 um 14:11

    Hallo 2002Andreas ,

    Vielen Dank.

    Mfg

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

    • sam2008
    • 25. Juli 2024 um 12:25

    Hallo Zusammen,


    kann jemand mir sagen, wieso kommt (NULL) Beschreibung (bis Firefox 115.13.0 ESR war normal aber mit 128 ESR kommt (NULL)).



    Hier ist ToolbarAutoHide.uc.js code:

    CSS
    (function () {
    	if (location != 'chrome://browser/content/browser.xhtml') return;
    	try {
    
    		let navbox = document.getElementById('navigator-toolbox');
    		let menubar = document.getElementById('toolbar-menubar');
    		let tabsbar = document.getElementById('TabsToolbar');
    		let navbar = document.getElementById('nav-bar');
    		let perbar = document.getElementById('PersonalToolbar');
    
    		//	Überwachen Änderungen an Symbolleistenattributen/toolbar
    		let observer = new MutationObserver(function (mutations) {
    			mutations.forEach(function (mutation) {
    				toolbarFlag(mutation);
    			});
    		});
    		let config = {
    			attributes: true,
    			attributeOldValue: true,
    			attributeFilter: ['customizing', 'autohide', 'collapsed', 'barAuto']
    		};
    		observer.observe(menubar, config);
    		observer.observe(tabsbar, config);
    		observer.observe(navbar, config);
    		observer.observe(perbar, config);
    
    		//	Überwachen Größe der Tableiste/tabsbar
    		let resizeObserver = new ResizeObserver(function (entries) {
    			entries.forEach(function (entry) {
    				toolbarFlag(entry);
    			});
    		});
    		resizeObserver.observe(tabsbar);
    		/**/
    
    		//	Tab-Leiste und Navigationsleiste können ebenfalls ausgeblendet werden
    		tabsbar.setAttribute('toolbarname', tabsbar.getAttribute('aria-label'));
    		navbar.setAttribute('toolbarname', navbar.getAttribute('aria-label'));
    		toolbar-menubar.setAttribute('toolbarname', "Menüleiste");
    		/*
    		//	Die Lesezeichenleiste wird standardmäßig automatisch geöffnet und geschlossen
    				menubar.removeAttribute('barAuto');
    				tabsbar.removeAttribute('barAuto');
    				navbar.removeAttribute('barAuto');
    				perbar.setAttribute('barAuto', 'true');
    		*/
    		//	Speichern, ob in Firefox automatisch geöffnet/geschlossen werden soll
    		menubar.setAttribute('persist', 'barAuto');
    		tabsbar.setAttribute('persist', 'barAuto');
    		navbar.setAttribute('persist', 'barAuto');
    		perbar.setAttribute('persist', 'barAuto');
    		//	Die Tab-Leiste weist viele Probleme auf, daher sollte sie sich beim Start nicht automatisch öffnen und schließen.
    		tabsbar.removeAttribute('barAuto');
    
    		//	Fügen Navigationsfeld ein leeres Element hinzu, um alles zu löschen. Doppelklicken Sie zum Wiederherstellen.
    		let box = MozXULElement.parseXULToFragment(`
    <vbox id="nav-box-escape" context="toolbar-context-menu" tooltiptext="Doppelklicken Sie, um die Symbolleiste anzuzeigen"/>
    		`);
    		navbox.appendChild(box);
    		/*
    		//	Symbolleisten-Kontextmenü zum Kontextmenükopf hinzugefügt
    				document.getElementById('context-navigation').setAttribute('context', 'toolbar-context-menu');
    		*/
    		//	Element zum Symbolleistenmenü hinzufügen
    		let menu = MozXULElement.parseXULToFragment(`
    <menu id="toolbarauto-menu" label="Automatisch ausblenden">
    	<menupopup id="toolbarauto-popup" onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
    </menu>
    <menuseparator/>
    		`);
    		document.getElementById('menu_customizeToolbars').before(menu);
    
    		//	Zum Rechtsklickmenü in der Navigation hinzufügen
    		let contextmenu = MozXULElement.parseXULToFragment(`
    <menu id="toolbarauto-contextmenu" label="Automatisch ausblenden">
    	<menupopup id="toolbarauto-contextpopup"
    		onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
    </menu>
    <menuseparator/>
    		`);
    		document.getElementById('viewToolbarsMenuSeparator').after(contextmenu);
    
    		let uccss = `
    #navigator-toolbox #titlebar {
    	-moz-box-ordinal-group	: 0;
    }
    #navigator-toolbox #toolbar-menubar {
    	-moz-box-ordinal-group	: 1;
    }
    #navigator-toolbox #TabsToolbar {
    	-moz-box-ordinal-group	: 2;
    }
    #navigator-toolbox #nav-bar {
    	-moz-box-ordinal-group	: 3;
    }
    #navigator-toolbox #PersonalToolbar {
    	-moz-box-ordinal-group	: 4;
    }
    #navigator-toolbox[barsAuto]:not([custommode]) {
    	z-index							: 100 !important;
    	position				: relative !important;
    }
    #navigator-toolbox[barsAuto]:not(:-moz-lwtheme, [custommode]) {
    	background-color		: var(--toolbar-bgcolor) !important;
    	background-image		: var(--toolbar-bgimage) !important;
    }
    #navigator-toolbox[barsAuto]:-moz-lwtheme:not([custommode]) {
    	background-color		: var(--lwt-accent-color) !important;
    	background-image		: var(--lwt-header-image, var(--lwt-additional-images)) !important;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[notShown] {
    	-moz-box-ordinal-group	: 10;
    	transition					: all 0.3s ease 0s;
    	height							: 5px;
    	cursor							: alias;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape:not([notShown]) {
    	display							: none;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[allAuto] {
    	margin-block-end		: -5px;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-box-escape[allAuto] {
    	height							: 0;
    	margin-block-end		: 0;
    }
    #navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]) {
    	margin-block-end		: 0;
    	transition					: all 0.3s ease 0s !important;
    }
    #navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]):hover {
    	margin-block-end		: calc(var(--barshide-height) * -1px);
    }
    #navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] {
    	margin-block-start	: calc(var(--ttlhide-height) * -1px) !important;
    	transition					: all 0.3s ease 0s !important;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] {
    	margin-block-start	: 0 !important;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
    #navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
    	-moz-box-ordinal-group	: 2;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]) #toolbar-menubar[barAuto],
    #navigator-toolbox:not([inFullscreen], [custommode]) #TabsToolbar[barAuto] {
    	-moz-box-ordinal-group	: 1;
    	transition					: all 0.3s ease 0s !important;
    	opacity							: 0 !important;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
    #navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
    	-moz-box-ordinal-group	: 1;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
    #navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto] {
    	-moz-box-ordinal-group	: 2;
    }
    #navigator-toolbox:not([inFullscreen], [custommode]) #nav-bar[barAuto],
    #navigator-toolbox:not([inFullscreen], [custommode]) #PersonalToolbar[barAuto] {
    	margin-block-start	: calc(var(--barhide-height) * -1px) !important;
    	transition					: all 0.3s ease 0s !important;
    	opacity							: 0 !important;
    }
    
    #navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
    #navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto],
    #navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-bar[barAuto],
    #navigator-toolbox:not([inFullscreen], [custommode]):hover #PersonalToolbar[barAuto] {
    	margin-block-start	: 0 !important;
    	opacity							: 1 !important;
    }
    		`;
    		let ucuri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(uccss));
    		let ucsss = Cc['@mozilla.org/content/style-sheet-service;1']
    			.getService(Ci.nsIStyleSheetService);
    		ucsss.loadAndRegisterSheet(ucuri, ucsss.AGENT_SHEET);
    
    	} catch (e) { };
    })();
    
    //	beim Start eingestellt
    window.addEventListener('MozAfterPaint', toolbarsset, { once: true });
    
    //	Anzeige von #TabsToolbar und Navigationsleiste mit ESC-Taste erzwingen
    document.addEventListener('keydown', function (event) {
    	if (event.keyCode == 27) navescape();
    });
    //	Doppelklicken Sie auf die Leiste, wenn alles gelöscht ist, um sie wiederherzustellen
    document.getElementById('nav-box-escape').addEventListener('dblclick', navescape);
    
    function navescape() {
    	document.getElementById('nav-bar').setAttribute('collapsed', 'false');
    	document.getElementById('nav-bar').removeAttribute('barAuto');
    	document.getElementById('TabsToolbar').setAttribute('collapsed', 'false');
    	document.getElementById('TabsToolbar').removeAttribute('barAuto');
    }
    
    //	Änderung des Attributwerts der Symbolleiste (anpassen, ausblenden)
    function toolbarFlag(aEvent) {
    	let barelm = aEvent.target;
    	let attribute = aEvent.attributeName;
    	//	Deaktivieren Sie die Anzeige der Tab-Leiste beim Hinzufügen von Tabs
    	if ((barelm.id == 'TabsToolbar')
    		&& (attribute == 'collapsed')
    		&& !(barelm.hasAttribute('collapsed'))) {
    		barelm.setAttribute('collapsed', aEvent.oldValue);
    	}
    	toolbarsset();
    }
    
    function toolbarsset() {
    	let boxelm = document.getElementById('navigator-toolbox');
    	let ttlbar = document.getElementById('titlebar');
    	let escbox = document.getElementById('nav-box-escape');
    	let barelm, hidingAttr, barheight, hasShown;
    	let barshide = 0, barsAuto = false, custommode = false, notShown = true;
    	let ttlhide = 0, tbarsAuto = false, allAuto = false;
    	let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
    	for (let toolbar of toolbarsid) {
    		barelm = document.getElementById(toolbar);
    		hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
    		if (hasShown = (barelm.getAttribute(hidingAttr) == 'true')) barelm.removeAttribute('barAuto');
    		barheight = barelm.clientHeight;
    		if (barelm.hasAttribute('barAuto')) {
    			barsAuto = true;
    			allAuto = true;
    			barelm.style.setProperty("--barhide-height", barheight);
    			barshide += barheight;
    			if ((toolbar == 'toolbar-menubar') || (toolbar == 'TabsToolbar')) {
    				tbarsAuto = true;
    				ttlhide += barheight;
    			}
    		} else {
    			if (!hasShown) notShown = false;
    			barelm.style.setProperty("--barhide-height", 0);
    		}
    		if (barelm.hasAttribute('customizing')) custommode = true;
    	}
    
    	if (barsAuto) boxelm.setAttribute('barsAuto', 'true');
    	else boxelm.removeAttribute('barsAuto');
    	if (tbarsAuto) ttlbar.setAttribute('barsAuto', 'true');
    	else ttlbar.removeAttribute('barsAuto');
    	if (custommode) boxelm.setAttribute('custommode', 'true');
    	else boxelm.removeAttribute('custommode');
    	if (notShown) {
    		escbox.setAttribute('notShown', 'true');
    		if (allAuto) escbox.setAttribute('allAuto', 'true');
    		else escbox.removeAttribute('allAuto');
    	} else {
    		escbox.removeAttribute('notShown');
    	}
    
    	boxelm.style.setProperty("--barshide-height", barshide);
    	ttlbar.style.setProperty("--ttlhide-height", ttlhide);
    }
    
    //	Menüerstellung
    function autoHideToolbarsPopupShowing(aEvent) {
    	let popup = aEvent.target;
    	if (popup != aEvent.currentTarget) return;
    
    	while (popup.firstChild) popup.removeChild(popup.firstChild);	//	übersichtliches Menü
    
    	let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
    	let barelm, hidingAttr;
    	for (let toolbar of toolbarsid) {
    		barelm = document.getElementById(toolbar);
    		hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
    
    		let menuitem = MozXULElement.parseXULToFragment(`
    <menuitem id="toolbarauto-${toolbar}" toolbarId="${toolbar}" type="checkbox"
    	label="${barelm.getAttribute('toolbarname')}"
    	checked="${(barelm.getAttribute('barAuto') == 'true')}"
    	disabled="${(barelm.getAttribute(hidingAttr) == 'true')}"
    	oncommand="autoHideToolbar(event);" />
    		`);
    		popup.append(menuitem);
    	}
    }
    
    //	Automatische Prüfung des Öffnens/Schließens des Menüs
    function autoHideToolbar(aEvent) {
    	let eventelm = aEvent.target;
    	let barid = eventelm.getAttribute('toolbarId');
    	let barelm = document.getElementById(barid);
    	if (eventelm.getAttribute('checked') == "true") {
    		barelm.setAttribute('barAuto', 'true');
    	} else {
    		barelm.removeAttribute('barAuto');
    	}
    }
    Alles anzeigen


    Vielen Dank

    Mfg

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

    • sam2008
    • 8. Mai 2024 um 10:20
    Zitat von Sören Hentzschel

    Hallo,

    siehe:

    Beitrag

    RE: Bookmark Backup/Restore Script funktioniert seit FF 125 nicht mehr

    Habe es für die Nightly (FF127) angepasst. FF125 habe ich noch nicht. Sollte aber auch mit FF125 laufen. Bitte mal testen:

    (Quelltext, 126 Zeilen)

    BrokenHeart
    16. April 2024 um 08:43

    Moin,

    herzlichen Dank

    Mfg

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

    • sam2008
    • 8. Mai 2024 um 09:11

    Moin Zusammen,

    bookmarks_backup_restore_buttons.uc.js UserScript funktioniert nicht mit Firefox 126.0b9 Version aber mit Firefox 115.10.0 ESR funktioniert.

    Kann jemand bitte helfen?

    Code
    (function() {
    
    try {
      Components.utils.import("resource:///modules/CustomizableUI.jsm");
      ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
      var {Services} = Components.utils.import("resource://gre/modules/Services.jsm", {});
      var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
      var RESTORE_FILEPICKER_FILTER_EXT = "*.json;*.jsonlz4";
      
      ChromeUtils.import("resource://gre/modules/Services.jsm");
      ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
      ChromeUtils.defineModuleGetter(this, "BookmarkJSONUtils", "resource://gre/modules/BookmarkJSONUtils.jsm");
      ChromeUtils.defineModuleGetter(this, "PlacesBackups", "resource://gre/modules/PlacesBackups.jsm");
      
      CustomizableUI.createWidget({
    	id: "uc-bookmarks_backup", // button id
    	defaultArea: CustomizableUI.AREA_NAVBAR,
    	removable: true,
    	label: "Lesezeichen sichern", // button title
    	tooltiptext: "Lesezeichen sichern", // tooltip title
    	onClick: function(event) {
    	  
    	  if(event.button=='0') {
    		let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
    		let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
    		let fpCallback = function fpCallback_done(aResult) {
    		  if (aResult != Ci.nsIFilePicker.returnCancel) {
    			// There is no OS.File version of the filepicker yet (Bug 937812).
    			PlacesBackups.saveBookmarksToJSONFile(fp.file.path)
    						 .catch(Cu.reportError);
    		  }
    		};
    
    		fp.init(window, "json",
    				Ci.nsIFilePicker.modeSave);
    		fp.appendFilter("json",
    						RESTORE_FILEPICKER_FILTER_EXT);
    		fp.defaultString = PlacesBackups.getFilenameForDate();
    		fp.defaultExtension = "json";
    		fp.displayDirectory = backupsDir;
    		fp.open(fpCallback);
    	  }
    	},
    	onCreated: function(button) {
    	  return button;
    	}
    		
      });
      
      CustomizableUI.createWidget({
    	id: "uc-bookmarks_restore", // button id
    	defaultArea: CustomizableUI.AREA_NAVBAR,
    	removable: true,
    	label: "Lesezeichen Wiederherstellen", // button title
    	tooltiptext: "Lesezeichen Wiederherstellen", // tooltip title
    	onClick: function(event) {
    	  
    	  if(event.button=='0') {
    		let backupsDir = Services.dirsvc.get("Desk", Ci.nsIFile);
    		let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
    		let fpCallback = aResult => {
    		  if (aResult != Ci.nsIFilePicker.returnCancel) {
    			
    			// check file extension
    			if (!fp.file.path.toLowerCase().endsWith("json") &&
    				!fp.file.path.toLowerCase().endsWith("jsonlz4")) {
    			  this._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreFormatError"));
    			  return;
    			}
    
    			// confirm ok to delete existing bookmarks
    			if (!Services.prompt.confirm(null,
    				   PlacesUIUtils.getString("bookmarksRestoreAlertTitle"),
    				   PlacesUIUtils.getString("bookmarksRestoreAlert")))
    			  return;
    
    			(async function() {
    			  try {
    				await BookmarkJSONUtils.importFromFile(fp.file.path, {
    				  replace: true,
    				});
    			  } catch (ex) {
    				PlacesOrganizer._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreParseError"));
    			  }
    			})();
    			
    			
    		  }
    		};
    
    		fp.init(window, "json",
    				Ci.nsIFilePicker.modeOpen);
    		fp.appendFilter("json",
    						RESTORE_FILEPICKER_FILTER_EXT);
    		fp.appendFilters(Ci.nsIFilePicker.filterAll);
    		fp.displayDirectory = backupsDir;
    		fp.open(fpCallback);
    	  }
    	},
    	onCreated: function(button) {
    	  return button;
    	}
    		
      });
      
      // style button icon
      var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
    	\
    	  #uc-bookmarks_backup .toolbarbutton-icon {\
    		list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
    		fill: red; /* icon color name/code */\
    	  }\
    	  #uc-bookmarks_restore .toolbarbutton-icon {\
    		list-style-image: url( data:image/png;base64,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); /* icon / path to icon */ \
    		fill: green; /* icon color name/code */\
    	  }\
    	\
      '), null, null);
      
      sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
      
    } catch (e) {
    	Components.utils.reportError(e);
    };
    
    })();
    Alles anzeigen

    Vielen Dank

    Mfg

Unterstütze uns!

Jährlich (2025)

65,5 %

65,5% (425,86 von 650 EUR)

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