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

Beiträge von Mira_Belle

  • Neue Quicklink-Button

    • Mira_Belle
    • 23. November 2025 um 22:41

    Wofür ist der ganze Bitch-Code?

    Habe jetzt mal nur den Code aus #10
    nach : "catch(e) {};" angepasst und übernommen, (danke dafür)
    und damit besteht es den Elchtest und auch den Funktionstest.
    (Sofortige Funktion nach verschieben aus dem Anpassfenster)

  • Neue Quicklink-Button

    • Mira_Belle
    • 23. November 2025 um 21:09

    Also, entweder besteht das Skript den Elchtest,
    oder der Button ist ohne Neustart sofort funktionstüchtig.

    Beides bekomme ich nicht hin:!:
    Was ist nun "wichtiger"?

    Ich meine der Elchtest, denn dieses Szenario, so kann ich mir vorstellen,
    kommt öfters vor.

    Für das andere Problem kann man (ich) ja einen Hinweis ins Skript schreiben.

    "Nach dem Verschieben aus dem Anpassfenster ist ein Neustart erforderlich!"

    So, oder so ähnlich.

    Meinungen?


    Zitat von Sören Hentzschel
    Zitat von Mira_Belle

    9 Quellen

    Auch wieder KI-erzeugt? Denn niemals ist die Dokumentation von WebExtension-Schnittstellen die Quelle für diesen Code, weil die im Script verwendete API damit überhaupt nichts zu tun hat … 🤦‍♂️

    Wie hätten's denn gern?
    Das waren, sind die Quellen die scheinbar perplexity genutzt hatte.
    Zumindest waren diese als Quellen angegeben.

    Einfach nur den Hinweis, dass KI verwendet wurde?
    Oder wie soll ich denn kenntlich machen, dass ich KI genutzt habe?

    Oder möchtest Du, dass ich keine Skripte mehr ....
    Dann lass ich's halt, wenn nicht gewünscht.
    Balstle nur noch für mich und schaue hier quasi nur noch zu.

    Nicht falsch verstehen! Bin nicht eingeschnappt oder zickig (bockig).
    Versuche es nur richtigzumachen und bin gerade total verunsichert.

  • Neue Quicklink-Button

    • Mira_Belle
    • 23. November 2025 um 20:06

    Wenn noch weiter Bestätigungen kommen, so denke ich, werde ich mich kommende Woche dranmachen
    die Skripte zu aktualisieren.

  • Neue Quicklink-Button

    • Mira_Belle
    • 23. November 2025 um 19:30

    Bitte testen.

    JavaScript
    (function() {
    
      if (!window.gBrowser)
    	return;
    
       const
       // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                id = 'link-button-cf', // Id des Buttons
              link = 'https://www.camp-firefox.de/forum/', // Linkziel des Buttons
             label = 'Quicklink: camp-firefox.de/...', // Bezeichnung des Buttons
       tooltiptext = 'Quicklink:\nForum - camp-firefox.de',
       // Icon-------------------------------------------------------
              icon = 'camp-firefox.ico',  // [Name.Dateiendung] des Symbols
          iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
       // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
       //BUTTON
    	try {
          CustomizableUI.createWidget({
             id: id,
             defaultArea: CustomizableUI.AREA_NAVBAR,
             label: label,
             tooltiptext: tooltiptext,
    
             onCreated: (button) => {
                // Optik
                button.style.MozContextProperties = 'fill, stroke, fill-opacity';
                button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
                button.style.minWidth = 'fit-content';
                //click
                button.addEventListener('click', () => {
                   if (event.button === 0) {
                      event.target.ownerGlobal.openTrustedLinkIn(link, "tab");
                   }
                });
             }
          });
      } catch (e) {};
    
    })();
    Alles anzeigen

    9 Quellen

    1. https://developer.mozilla.org/en-US/docs/Moz…/tabs/onCreated
    2. https://developer.mozilla.org/en-US/docs/Moz…ndows/onCreated
    3. https://kaiwern.com/posts/2022/02/…efox-extension/
    4. https://developer.mozilla.org/en-US/docs/Moz…_to_the_toolbar
    5. https://developer.mozilla.org/en-US/docs/Moz…/Toolbar_button
    6. https://www.reddit.com/r/firefox/comm…_with_a_button/
    7. https://stackoverflow.com/questions/3543…r-to-execute-js
    8. https://stackoverflow.com/questions/2221…hanges-dom?rq=1
    9. Fix: Toolbar-Buttons reagieren nicht mehr ab FF 134
  • Neue Quicklink-Button

    • Mira_Belle
    • 23. November 2025 um 18:20

    Horstmann Danke für den "Elchtest".
    Nun muss ich alle "Buttons" noch einmal überarbeiten.
    Aber hatte Mitleser nicht geschrieben, dass ....?
    Wenn man nicht alles selber überprüft, tststs.
    Dennoch, so denke ich, ist die Idee hinter Mitlesers Vorlage die richtige.

    Also, bevor ich hier aufräume und auch die passenden Symbole hochlade,
    werde ich die Skripte nach Horstmanns Vorlage "reparieren"!
    Wird halt nun aber leider etwas dauern.
    Wenn "dringender" Bedarf besteht, passe ich das betreffende Skript dann auch vorrangig an!

  • Neue Quicklink-Button

    • Mira_Belle
    • 22. November 2025 um 10:21

    Hier mal ein Beispiel, wie ich das dachte!

    JavaScript
    (function() {
    
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'browser-toolbox-button', // Id des Buttons
            label = 'Browser-Werkzeuge', // Bezeichnung des Buttons
      tooltiptext = 'Browser-Werkzeuge',
      // Icon-------------------------------------------------------
        icon = 'werkzeuge.png',
         iconPath = 'file:///C:/FoxIcons2/',
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    Alles anzeigen

    und an statt:
    button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
    einfach
    button.style.listStyleImage = 'url("' + iconPath + icon + '")';

    Wenn Du die Zeile "curProfDir = ...." auch weg haben möchtest,
    muss am Ende der Zeile, also hinter "file:///C:/FoxIcons2/' ", das Komma durch das Semikolon ersetzt werden!

  • Neue Quicklink-Button

    • Mira_Belle
    • 22. November 2025 um 10:03

    FuchsFan Natürlich funktioniert das,

    aber wozu habe ich einen Konfigurationsbereich eingeführt?

  • Neue Quicklink-Button

    • Mira_Belle
    • 22. November 2025 um 08:59

    für den About-Dialog

    Code
    // About-Dialog.uc.js
    // Das Script erstellt einen Button, der den About-Dialog öffnet.
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
    	return;
    
       const
       // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                id = 'aboutname', // Id des Buttons
             label = 'aboutname', // Bezeichnung des Buttons
       tooltiptext = 'Über Firefox',
       // Icon-------------------------------------------------------
              icon = 'firefox_logo_16.svg',  // [Name.Dateiendung] des Symbols
          iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)); // Pfad zum Profil
       // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
       //BUTTON
    	try {
          CustomizableUI.createWidget({
             id: id,
             defaultArea: CustomizableUI.AREA_NAVBAR,
             label: label,
             tooltiptext: tooltiptext,
    
             onCreated: (button) => {
                button.style.MozContextProperties = 'fill, stroke, fill-opacity';
                button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
                button.style.minWidth = 'fit-content';
             }
          });
    	} catch(e) {};
    
      //click
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', event => {
            if (event.button !== 0) return;
              openAboutDialog();
          });
        } else {
          setTimeout(add_button, 100);
        }
      })();
    
    })();
    Alles anzeigen

    firefox_logo_16.zip

    für Addons-UpDate-Check

    JavaScript
    // Addons-UpDate-Check.uc.js
    // Das Script erstellt einen Button, der einen UpDate-Check ausführt und dies in einem neuen Tab anzeigt.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
    	return;
    
       const
       // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                id = 'addons-update-button', // Id des Buttons
             label = 'Add-ons Update', // Bezeichnung des Buttons
       tooltiptext = 'Add-ons aktualisieren',
       // Icon-------------------------------------------------------
              icon = 'sync.svg',  // [Name.Dateiendung] des Symbols
          iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
       // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
       //BUTTON
    	try {
          CustomizableUI.createWidget({
             id: id,
             defaultArea: CustomizableUI.AREA_NAVBAR,
             label: label,
             tooltiptext: tooltiptext,
    
             onCreated: (button) => {
                button.style.MozContextProperties = 'fill, stroke, fill-opacity';
                button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
                button.style.minWidth = 'fit-content';
                button.style.color = '#ffe10f'; // Farbe für das SVG-Icon setzen
             }
          });
    	} catch(e) {};
    
    // click
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', (event) => {
            if (event.button !== 0) {
              return;
            }
            event.target.ownerGlobal.openTrustedLinkIn('about:addons', 'tab');
            window.addEventListener('pageshow', function onPageshow(e) {
              const doc = e.target;
              if (doc.URL !== 'about:addons') {
                return;
              }
              window.removeEventListener('pageshow', onPageshow);
              doc.querySelector('addon-page-options panel-item[action="view-recent-updates"]').click();
              doc.querySelector('addon-page-options panel-item[action="check-for-updates"]').click();
              content.setTimeout(function () {
                const categories = doc.getElementById('categories');
                categories
                  .querySelector('button[viewid="addons://updates/recent"]')
                  .click();
                categories
                  .querySelector('button[viewid="addons://updates/available"]')
                  .click();
              }, 1500);
            });
          });
        } else {
          setTimeout(add_button, 100);
        }
      })();
    
    })();  
    Alles anzeigen

    sync.zip

    für das Downloadfenster

    JavaScript
    // Downloadbutton.uc.js
    // Das Script erstellt einen Button, der das Downloadfenster öffnet.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
     
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser) 
        return;
      
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'Download-button', // Id des Buttons
            label = 'Download Fenster öffnen', // Bezeichnung des Buttons
      tooltiptext = 'Download Fenster öffnen',
      // Icon-------------------------------------------------------
             icon = 'Download.png',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
      //BUTTON
    	try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
          }
        });
    	} catch(e) {};
    
      (function add_button(() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', (event) => {
            if (event.button === 0) {
              event.target.ownerGlobal.window.open(
                'chrome://browser/content/downloads/contentAreaDownloadsView.xhtml',
                'Downloads',
                'chrome,resizable=yes,width=800,height=600,left=120,top=100'
              );
            }
          });
        } else {
        // Button existiert noch nicht → später erneut versuchen
        setTimeout(add_downloads_button_listener, 100);
        }
      })();
    
    })();
    Alles anzeigen

    Download.zip

    für den Neustart

    JavaScript
    // Restart_Firefox.uc.js
    // Das Script erstellt einen Button, der einen Neustart des Browsers auslöst .
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    // Linksklick 	if (event.button == 0)
    // Mittelklick 	if (event.button == 1)
    // Rechtsklick 	if (event.button == 2)
    
    (function() {
    
      if (location.href !== 'chrome://browser/content/browser.xhtml')
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'restart-button2a', // Id des Buttons
            label = 'Neustart', // Bezeichnung des Buttons
      tooltiptext = 'Neustart (inkl. SkriptCache Löschen)',
      // Icon-------------------------------------------------------
             icon = 'restart_1.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
        try {
            CustomizableUI.createWidget({
                id: id,
                defaultArea: CustomizableUI.AREA_NAVBAR,
                label: label,
                tooltiptext: tooltiptext,
    
                onCreated: (button) => {
                    button.style.MozContextProperties = 'fill, stroke, fill-opacity';
                    button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
                    button.style.minWidth = 'fit-content';
                    button.style.color = '#ff0000'; // Farbe für das SVG-Icon setzen
                    button.style.paddingLeft = '5px';
                    button.style.paddingTop = '3px';
                }         
            });
        } catch(e) { };
    
      (function add_restart_button_listener() {
        const button = document.getElementById('restart-button2a');
    
        if (button) {
          button.addEventListener('click', (event) => {
            // rechte Maus – Neustart
            if (event.button === 2) {
              Services.startup.quit(
                Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit
              );
            }
            // linke Maus – Neustart mit Löschung des Start-Caches
            if (event.button === 0) {
              event.preventDefault();
              Services.appinfo.invalidateCachesOnRestart();
              Services.startup.quit(
                Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit
              );
            }
            // Mittelklick
            if (event.button === 1) {
              openTrustedLinkIn("about:config", "tab");
            }
          });
        } else {
          // Button existiert noch nicht → später erneut versuchen
          setTimeout(add_restart_button_listener, 100);
        }
      })();
    
    })();
    Alles anzeigen

    restart_1.zip


    Button für den Profilmanager

    JavaScript
    // QuickProfilesChangesButton.uc.js
    // Das Script erstellt einen Button, der den Profilmanager zur Auswahl einer weiteren Instans öffnet.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (location.href !== 'chrome://browser/content/browser.xhtml')
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'profileschange-button', // Id des Buttons
            label = 'Profil zusätzlich starten', // Bezeichnung des Buttons
      tooltiptext = 'Profile Changer',
      // Icon-------------------------------------------------------
             icon = 'profile.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
      //BUTTON
    	try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
            button.style.color = '#E0E0E0'; // Farbe für das SVG-Icon setzen
          }
        });
    	} catch(e) {};
    
    // click
      (function add_button() {
        const button = document.getElementById(id);
    
        if (button) {
          button.addEventListener('click', (event) => {
            if (event.button != 0) {
              return;
            }
            let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
            // let args = ["-no-remote", "-P", "Neu", "-foreground"]; // Profil wird ausgewählt
            let args = ["-no-remote", "-P", "-foreground"]; // Profilmanager aufrufen
            file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // 64‑bit
            // file.initWithPath("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); // 32‑bit
            // file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox"); // macOS
            let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
            process.init(file);
            process.run(false, args, args.length);
          });
        } else {
          setTimeout(add_button, 100);
        }
      })();
    
    })();
    Alles anzeigen

    profile.zip

    Button "Erweiterungen" verschiebbar

    JavaScript
    // Erweiterungen-button verschiebbar.uc.js
    // Vorlage: 2002Andreas in https://www.camp-firefox.de/forum/thema/135846/?postID=1217540#post1217540
    // Änderung: Speravir in https://www.camp-firefox.de/forum/thema/135846/?postID=1218255#post1218255
    
    // Neu! https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    (function() {
    
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      origID = "unified-extensions-button", // ID des originalen Buttons
      label = "Erweiterungen",
      tooltiptext = label,  // auch eigener Text möglich, dieser in Anführungszeichen
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    
      menuButton = document.getElementById(origID),
      buttonID = 'ucjs_' + origID;
    
      if (!CustomizableUI.getPlacementOfWidget( buttonID )) {
        try {
          CustomizableUI.createWidget({
            id: buttonID,
            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 = buttonID;
              toolbaritem.className = 'chromeclass-toolbar-additional';
              toolbaritem.setAttribute('label', label);
              toolbaritem.style.color = '#FF00FF'; // Farbe für das SVG-Icon setzen
              return toolbaritem;
            }
          });
          if (!CustomizableUI.getPlacementOfWidget( buttonID )) {
            menuButton.style.display = 'none';
            return;
          };
        } catch(e) {
          menuButton.style.display = 'none';
          return;
        };
      };
    
      setTimeout(function() {
       document.getElementById(buttonID).appendChild(menuButton);
       menuButton.setAttribute('consumeanchor', buttonID);
       menuButton.setAttribute('label', label);
       menuButton.setAttribute('tooltiptext', tooltiptext);
      }, 0);
    
    }());
    Alles anzeigen


    PersonalToolbar (Lesezeichenleiste) ein- und ausblenden

    JavaScript
    // Button_PersonalToolbar.uc.js
    // Das Script erstellt einen Button, der die Lesezeichentoolbar ein- oder ausblendet.
    
    // Source file https://www.camp-firefox.de/forum/thema/134920/?postID=1232103#post1232103
    // PersonalToolbar_ausblenden
    // basierend auf den Ideen von BrokenHeart und visoer, Verbesserungen von Horstmann,
    // Korrekturen von Sören und Anpassungen von Mira
    // Neu! https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function ptbut() {
        
        if (location.href !== 'chrome://browser/content/browser.xhtml')
            return;
    
        const              
        // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
          startHeight = '0px'               ,// '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste
             collapse = '0px'               ,// Leiste nicht sichtbar
              visible = '24px'              ,// Leiste sichtbar
        autoCloseTime = 5000                ,// 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec  
           intervalID = 0                   ,
          persToolbar = document.getElementById('PersonalToolbar'),
    
                   id = 'PersonalToolbar-button', // Id des Buttons
                label = 'Toggle', // Bezeichnung des Buttons
          tooltiptext = 'Lesezeichenleiste ein-/ausblenden',
        // Icon-------------------------------------------------------
                 icon = 'bookmark.svg',  // [Name.Dateiendung] des Symbols
             iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
        // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
           curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
        try {
            CustomizableUI.createWidget({
                id: id,
                defaultArea: CustomizableUI.AREA_NAVBAR,
                label: label,
                tooltiptext: tooltiptext,
    
                onCreated: (button) => {
                    button.style.MozContextProperties = 'fill, stroke, fill-opacity';
                    button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
                    button.style.minWidth = 'fit-content';
                    button.style.color = '#ffaa00'; // Farbe für das SVG-Icon setzen
                }         
            });
        } catch(e) { };
    
        //----------BEGINN----------------------
        // Funktion zum Abfragen der Tastatur ("belauscht" Eingaben)
        // Hinweis: Tasten, die anderweitig bereits "abgefangen" werden, ergeben keinen Event
        document.addEventListener('keydown', (event) => {
            let keyName = event.key;
                if (event.altKey && keyName == 'q') {       // Funktion wird ausgeführt, wenn "Alt & q gedrückt werden
                    onClick(event,true);
                }
            }, false
        );
        //----------ENDE------------------------ 
        // Anmerkungen und Beispiele am Ende des Scriptes
    
        document.getElementById('PersonalToolbar').style.minHeight = '0';
        document.getElementById('PersonalToolbar').style.transition = 'all 0.3s steps(6, end)';
    
        if( startHeight === visible || startHeight === collapse ) {
            document.getElementById('PersonalToolbar').style.height = startHeight;
        }
        else {
            document.getElementById('PersonalToolbar').style.height = visible;
        }
        document.getElementById('PersonalToolbar-button').addEventListener( "click", onClick );
    
        function onClick(aEvent, keyEvent=false) {
    
            if(!keyEvent && aEvent.button != 0) {
                return;    
            }
            if (persToolbar.style.height == '') {
                    persToolbar.style.height = collapse;
            }
            else if (persToolbar.style.height == visible) {
                    persToolbar.style.height = collapse;
            }
            else if(persToolbar.style.height == collapse) {
                persToolbar.style.height = visible;
                if(!intervalID && autoCloseTime) {
                    intervalID =  aEvent.target.ownerGlobal.setInterval( autoClose, autoCloseTime ); 
                }
            }
        }
    
        function autoClose() {
            if (persToolbar.style.height == visible) {
                persToolbar.style.height = collapse;
            }
            if (intervalID) {
                clearInterval(intervalID);
                intervalID = 0;
            }
        }
    /*
        function autoClose() {
            if( intervalID ) {
                if( persToolbar.style.height == visible) {
                    persToolbar.style.height = collapse;
                    clearInterval(intervalID); 
                    intervalID=0;
                }
            }
        }
    */
    })();
    
    // Anmerkungen und Beispiele
    
    // Funktion wird ausgeführt, wenn STRG + Alt + l gedrückt wird
    //  if (event.ctrlKey && event.altKey && keyName == 'l') {       
    
    // Funktion wird ausgeführt, wenn STRG + w gedrückt werden
        //if (event.ctrlKey && keyName == 'w') {
    Alles anzeigen

    bookmark.zip

  • Neue Quicklink-Button

    • Mira_Belle
    • 22. November 2025 um 08:52

    Für den Profilordner

    JavaScript
    // Button_for_Profilfolder.us.js
    // Das Script erstellt einen Button, der direkt den "Profilordner" öffnet.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'profilefolder-ToolBarButton', // Id des Buttons
            label = 'Profil-Ordner öffnen', // Bezeichnung des Buttons
      tooltiptext = 'Profil-Ordner öffnen',
      // Icon-------------------------------------------------------
             icon = 'user.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
      //BUTTON
    	try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
            button.style.color = '#ff5a79'; // Farbe für das SVG-Icon setzen
          }
        });
    	} catch(e) {};
    
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          // click
          button.addEventListener('click', (event) => {
            if (event.button === 0) {
              event.target.ownerGlobal.Services.dirsvc.get("ProfD", Ci.nsIFile).launch();
            }
          });
        } else {
          // Wenn der Button noch nicht existiert, später nochmal probieren
          setTimeout(add_button, 100);
        }
      })();
    
    })();
    Alles anzeigen

    user.zip

    für den "Chromeordner"

    JavaScript
    // Button_for_Chromefolder.us.js
    // Das Script erstellt einen Button, der direkt den "chrome"-Ordner im "Profil" öffnet.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'Open-Chrome-Folder-ToolBarButton', // Id des Buttons
            label = 'Chrome-Ordner öffnen', // Bezeichnung des Buttons
      tooltiptext = 'Chrome-Ordner öffnen',
      // Icon-------------------------------------------------------
             icon = 'folder.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
      //BUTTON
    	try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
            button.style.color = '#619dbf'; // Farbe für das SVG-Icon setzen
          }
        });
    	} catch(e) {};
    
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', event => {
        //    if (event.button === 0) {
              event.target.ownerGlobal.Services.dirsvc.get("UChrm", Ci.nsIFile).launch();
        //    }
          });
        } else {
          setTimeout(add_button, 100);
        }
      })();
    
    })();
    Alles anzeigen

    folder.zip

    Für die Browserwerkzeuge

    JavaScript
    // Browser-Werkzeuge.uc.js
    // Das Script erstellt einen Button, der die Browser-Wekzeuge öffnet.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'browser-toolbox-button', // Id des Buttons
            label = 'Browser-Werkzeuge', // Bezeichnung des Buttons
      tooltiptext = 'Browser-Werkzeuge',
      // Icon-------------------------------------------------------
             icon = 'window-dev-tools.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
      //BUTTON
    	try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
          //  button.style.listStyleImage = 'url("' + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
            button.style.color = '#83ee1a'; // Farbe für das SVG-Icon setzen
          }
        });
    	} catch(e) {};
    
      // click
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', (event) => {
            if (event.button === 0) {
              // Versuche das Menü-Element zu finden
              let document = event.target.ownerDocument;
              let menuItem = document.getElementById('menu_browserToolbox');
              if (!menuItem) {
                let { require } = ChromeUtils.importESModule(
                  "resource://devtools/shared/loader/Loader.sys.mjs",
                  {}
                );
                let { BrowserToolboxLauncher } = require(
                  'resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs'
                );
                BrowserToolboxLauncher.init();
    
                // Beobachter für das Menü-Element, bis es auftaucht
                let observer = new MutationObserver(() => {
                  menuItem = document.getElementById('menu_browserToolbox');
                  if (menuItem) {
                    menuItem.click();
                    observer.disconnect();
                  }
                });
                observer.observe(document, { childList: true, subtree: true });
              } else {
                menuItem.click();
              }
            }
          });
        } else {
          // Wenn Button noch nicht existiert, erneut versuchen
          setTimeout(add_button, 100);
        }
      })();
    
    })();
    Alles anzeigen

    window-dev-tools.zip

    für Werkzeugen für Webentwickler

    JavaScript
    // Werkzeuge-fuer-Webentwickler.us.js
    // Das Script erstellt einen Button, der die Werkzeuge-fuer-Webentwickler öffnet.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'dev-toolbox-button', // Id des Buttons
            label = 'Werkzeuge für Web-Entwickler', // Bezeichnung des Buttons
      tooltiptext = 'Werkzeuge für Web-Entwickler',
      // Icon-------------------------------------------------------
             icon = 'developer.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    	  Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
      //BUTTON
    	try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
            button.style.color = '#ffe10f'; // Farbe für das SVG-Icon setzen
          }
        });
    	} catch(e) {};
    
      // click
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', (event) => {
            if (event.button === 0) {
              // Versuche das Menü-Element zu finden
              let document = event.target.ownerDocument;
              let menuItem = document.getElementById('menu_devToolbox');
    
              if (!menuItem) {
                let { require } = ChromeUtils.importESModule(
                  "resource://devtools/shared/loader/Loader.sys.mjs",
                  {}
                );
                require('devtools/client/framework/devtools-browser');
    
                // Beobachter für das Menü-Element, bis es auftaucht
                let observer = new MutationObserver(() => {
                  menuItem = document.getElementById('menu_devToolbox');
                  if (menuItem) {
                    menuItem.click();
                    observer.disconnect();
                  }
                });
                observer.observe(document, { childList: true, subtree: true });
              } else {
                menuItem.click();
              }
            }
          });
        } else {
          // Wenn Button noch nicht existiert, erneut versuchen
          setTimeout(add_button, 100);
        }
      })();
    
    })();
    Alles anzeigen

    developer.zip

  • Neue Quicklink-Button

    • Mira_Belle
    • 22. November 2025 um 08:28

    Skripte sind nun überarbeitet und sollte sowohl den "Elchtest" sowie das "ohne Neustart sofort funktionstüchtig" bestehen.

    Mitleser hat hier ein Musterskript vorgestellt, das ich mal etwas unter die Lupe genommen habe.
    Nach Überprüfung und vergleichen mit "meinem" Quicklink-Button für das Forum,
    kam ich zu dem Ergebnis, dass dieses Skript wohl einen besseren Code beinhaltet.
    Darauf habe ich alle meine "Quicklinks" überarbeitet.

    Dieser Teil ist von "https://www.perplexity.ai/" erstellt!

    Zitat

    Hauptunterschiede

    • Konfiguration und Anpassbarkeit: Die neue Variante verwendet eine zentrale "UserConfiguration"-Sektion,
      in der z.B. die ID, das Linkziel, das Label und der Icon-Pfad klar anpassbar ausgegliedert sind.
      Das macht das Skript deutlich flexibler im täglichen Einsatz und Änderungen können ohne Änderung
      an der Logik vorgenommen werden, was Wartung und Anpassung vereinfacht.
    • Icon-Handling: Im neuen Skript werden Icon-Pfad und -Dateiname dynamisch generiert. Zusätzlich
      werden moderne CSS-Eigenschaften wie MozContextProperties gesetzt, was wichtig sein kann,
      wenn SVG-Icons oder Farbthemen im Browser verwendet werden. Auch wird die Handhabung
      der Firefox-Einstellung zur Unterstützung von SVG-Kontext-Eigenschaften berücksichtigt.
    • Event-Handling: Das neue Skript nutzt einen gezielten Event Listener für Klicks und prüft explizit,
      dass der linke Mausklick benutzt wurde (event.button === 0). Das erhöht die Fehlertoleranz und Flexibilität
      bei der Benutzung durch Nutzer im Gegensatz zur festen onclick-Logik der alten Variante,
      in der alle Klicks (auch Rechtsklick oder Mittelklick) behandelt werden.
    • Tab-Logik und Ziel: Die alte Variante öffnet immer vier feste URLs, während die neue Variante flexibel für eine
      einzelne frei konfigurierbare Zieladresse programmiert ist. Falls mehrere Ziele benötigt werden,
      müsste das im neuen Skript ergänzt werden, aber für typische Szenarien ist das neue Verhalten deutlich übersichtlicher.
    • Kompatibilität und Zukunftssicherheit: Die neue Variante nutzt moderne Browser-APIs und bezieht Features
      wie PathUtils und moderne Preferences explizit mit ein – sie ist daher besser für neue Firefox-Versionen
      geeignet und zukunftssicherer.

    Fazit

    Die neue Variante ist die bessere Wahl, weil sie einfacher anpassbar, technisch moderner und robuster gegenüber zukünftigen Änderungen ist.
    Sie ist übersichtlicher strukturiert und unterstützt eine nachhaltige Wartung und Erweiterung durch Nutzer mit unterschiedlichen Bedürfnissen.

    Alles anzeigen

    Bis hierhin ist der Text von "https://www.perplexity.ai/" erstellt.

    Nun denn, hier meine ersten Quicklink-Skripte.

    Als Erstes der Quicklink-Button für das Forum.

    JavaScript
    // QuickLinkButton-cf.uc.js
    // Das Script erstellt einen Button, der einen Tab öffnet mit einer Website (https://www.camp-firefox.de/forum/).
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
    	return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                id = 'link-button-cf', // Id des Buttons
              link = 'https://www.camp-firefox.de/forum/', // Linkziel des Buttons
             label = 'Quicklink: camp-firefox.de/...', // Bezeichnung des Buttons
       tooltiptext = 'Quicklink:\nForum - camp-firefox.de',
      // Icon-------------------------------------------------------
              icon = 'camp-firefox.ico',  // [Name.Dateiendung] des Symbols
          iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
        curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)); // Pfad zum Profil
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    
      // Erlaubt korrekte .svg Icons Darstellung in allen UI Bereichen
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
      //BUTTON
      try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            // Optik
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
          }
        });
    	} catch(e) {};
    
      //click
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', event => {
            if (event.button === 0) {
              openTrustedLinkIn(link, "tab");
            }
          });
        } else {
          setTimeout(add_button, 100);
        }
      })();
    
    })();
    Alles anzeigen

    camp-firefox.zip

    Nun ein Button der gleich mehrere Tabs (Internetseiten) öffnet

    JavaScript
    // QuickLinkButton.uc.js
    // Das Script erstellt einen Button, der mehrere Tabs öffnet mit verschiedenen Webseiten.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
    	return;
    
       const
       // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                id = 'link-button', // Id des Buttons
       //       link = 'fedia.io/m/FirefoxCSS', // Linkziel des Buttons
        quickLinks =
                   [
                      'https://www.tagesschau.de/',
                      'https://www.zdfheute.de/',
                      'https://www.welt.de/?wtrid=crossdevice.n24.desktop.directhome',
                      'https://www.n-tv.de/',
                   ];
             label = 'Quicklink: M:C', // Bezeichnung des Buttons
       tooltiptext = 'Quicklink: Morning Coffee',
       // Icon-------------------------------------------------------
              icon = 'cup-16as.png',  // [Name.Dateiendung] des Symbols
          iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
       // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
       //BUTTON
    	try {
          CustomizableUI.createWidget({
             id: id,
             defaultArea: CustomizableUI.AREA_NAVBAR,
             label: label,
             tooltiptext: tooltiptext,
    
             onCreated: (button) => {
                button.style.MozContextProperties = 'fill, stroke, fill-opacity';
                button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
                button.style.minWidth = 'fit-content';
             }
          });
    	} catch(e) {};
    
      //click
      (function add_button() {
          const button = document.getElementById(id);
          if (button) {
             button.addEventListener('click', function(event) {
                quickLinks.forEach(link => {
                   if (event.button === 0) {
                      openWebLinkIn(link, "tab");
                   }
                });
             });
          } else {
             setTimeout(add_button, 100);
          }
       })();
    
    })();
    Alles anzeigen

    cup-16as.zip

    Und nun noch ein Quicklink-Button für "about:about"

    JavaScript
    // QuickLinkButton-about:about.uc.js  =  Button_for_QuickLinks-about.uc.js
    // Das Script erstellt einen Button, der einen Tab öffnet mit den Links zu verschiedenen "about:"-Seiten.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
    	return;
    
       const
       // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                id = 'link-button-about', // Id des Buttons
              link = 'about:about', // Linkziel des Buttons
             label = 'Quicklink: about:about', // Bezeichnung des Buttons
       tooltiptext = 'Quicklink:\nabout:about',
       // Icon-------------------------------------------------------
              icon = 'firefox.svg',  // [Name.Dateiendung] des Symbols
          iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
       // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
       //BUTTON
    	try {
          CustomizableUI.createWidget({
             id: id,
             defaultArea: CustomizableUI.AREA_NAVBAR,
             label: label,
             tooltiptext: tooltiptext,
    
             onCreated: (button) => {
                button.style.MozContextProperties = 'fill, stroke, fill-opacity';
                button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
                button.style.minWidth = 'fit-content';
                button.style.fill = '#f1b508'; // Farbe für das SVG-Icon setzen
             }
          });
    	} catch(e) {};
    
       // click
       (function add_button() {
       const button = document.getElementById(id);
    
       if (button) {
          button.addEventListener('click', (event) => {
             if (event.button === 0) {
             event.target.ownerGlobal.openTrustedLinkIn(link, "tab");
             }
          });
       } else {
          setTimeout(add_button, 100);
       }
       })();
    
    })();
    Alles anzeigen

    firefox.zip

  • Eigene Zusatzleisten ab ff 143+

    • Mira_Belle
    • 21. November 2025 um 18:08
    Zitat von Horstmann

    Das war absolut kein Vorwurf, ....

    Das habe ich auch nicht als Vorwurf aufgefasst. Es macht mir ja immer wieder Spaß, mit Dir neues auszuprobieren
    und zu schaffen!
    Ich nutze immer noch das CSS-Monster für die Tabs. Finde das einfach viel schöner.
    Z.Z. funktionieren ja die allermeisten Skripts und Neues?
    Wie soll man den Firefox noch erweitern?
    Vor allem, es muss ja auch irgendwie sinnvoll sein.
    Ideen habe ich z.Z. wirklich keine.
    Für mich ist "mein" Firefox perfekt.

  • Eigene Zusatzleisten ab ff 143+

    • Mira_Belle
    • 21. November 2025 um 17:15
    Zitat von Horstmann

    Aber sonst war's immer ein Teil von einem unserer Community Projekte mit Mitstreitern, nur das hier braucht anscheinend kaum einer.

    Sorry, z.Z. habe ich wenig Zeit und habe auch, danke an Mitleser, gerade eigene Projekte.
    Meine ganzen Buttons! Die meisten habe ich schon neu erstellt, habe aber noch ein, zwei Brocken.
    Und dann habe ich ja auch immer noch das Projekt "Symbole" am Backen.
    Da werde ich aber erst im neuen Jahr dran gehen.

  • Eigene Zusatzleisten ab ff 143+

    • Mira_Belle
    • 20. November 2025 um 21:21

    Horstmann Du hast Dich da ganz schön verbissen!
    Eigentlich ist so etwas mein Part. :D

  • Eigene Zusatzleisten ab ff 143+

    • Mira_Belle
    • 20. November 2025 um 09:45
    Zitat von FuchsFan

    ... hat sich erledigt. ...

    Ok.

  • Eigene Zusatzleisten ab ff 143+

    • Mira_Belle
    • 19. November 2025 um 21:23
    Zitat von FuchsFan

    Gib mir doch bitte mal einen Rat, wie der Pfad zu einem eigenen Icon aussehen müsste, ....

    Das kommt ganz darauf an, wo genau das Symbol liegt!
    Liegt es in dem entsprechenden Ordner unter chrome im Profil, sollte es ohne Veränderungen funktionieren.
    Gibt doch mal den ganz genauen Pfad an, dann schauen wir mal.

  • Eigene Zusatzleisten ab ff 143+

    • Mira_Belle
    • 19. November 2025 um 10:10
    Zitat von Mitleser

    Ich nutze meist dies: ....
    oder auch das (leider keine Quelle): ....
    Ein Beispiel eines einfachen widgets vom typ button wäre (besteht auch den Elchtest) : ....

    Klasse:!: Ein dickes, fettes Danke dafür. :thumbup:

  • Windows 10

    • Mira_Belle
    • 18. November 2025 um 21:11
    Zitat von TextAdventure

    Windows 10 Home 64Bit

    konnte ich ohne Microsoft-Konto, nur "Lokales Konto" auf

    Windows 11 version25H2

    per "Windows Update" upgraden.

    Schön.
    Nur geht es hier um Windows 10!
    Und ganz im Speziellen um das ESU-Programm.

  • Eigene Zusatzleisten ab ff 143+

    • Mira_Belle
    • 18. November 2025 um 16:02
    Zitat von Horstmann

    Kann ich nicht ganz nachvollziehen: was ist komplett aus ? :/
    Und unterziehe soviel du Lust hast, jede Verbesserung und jeder Fehlerbericht ist willkommen! :thumbup:

    ----------

    A propos, ein Bug: keiner der beiden Buttons für die Leiste darf komplett aus den Symbolleisten oder dem Overflowmenü entfernt werden, sonst zerschiesst es den Code nach Neustart. =O
    Das lässt sich korrigieren wenn man im Anpassenfenster den betroffenen Button wieder in eine Leiste zieht und neu startet, nervt aber.

    Ein Problem mit dem ich schon 1000x gekämpft habe; scheint dass alle eigenen Buttons (mit wie von mir benutzten Buttoncodes), die nur im Anpassenbereich (#customization-palette) abgelegt sind, mit Verzögerung (lazy) geladen werden, und dann deren Referenz in Funktionen etc. gebrochen wird => Errors, und der Rest vom Script wird stillgelegt. ?(
    Vorschläge willkommen. ;)

    -----------

    Ah, dann ist es wohl DAS was ich meinte!

  • Eigene Zusatzleisten ab ff 143+

    • Mira_Belle
    • 17. November 2025 um 21:11

    #116 Läuft hier bei mir auch soweit ohne Probleme.

    Einzig wenn ich die Leiste komplett "aus" habe,
    den FF neu starte ist eine Leise, ohne Funktion zu sehen.
    Bis aber der Sache nicht weiter auf den Grund gegangen,
    da ich sie bisher nicht nutze.
    Wenn gewünscht, unterziehe ich das Skript mal einer genaueren Überprüfung.

  • Entwickler-Werkzeuge..Stilbearbeitung..Vorschau geht nicht

    • Mira_Belle
    • 14. November 2025 um 17:00
    Zitat von Sören Hentzschel

    auf welche dieses Entwicklerwerkzeug keinen Zugriff hat.

    Danke für diese Erklärung.
    Dann warten wir einfach auf das, was da noch so passieren wird.

Unterstütze uns!

Jährlich (2025)

107,3 %

107,3% (697,41 von 650 EUR)

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