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

Beiträge von Horstmann

  • Beenden Button

    • Horstmann
    • 13. Mai 2025 um 19:52
    Zitat von FuchsFan

    Eine andere Variante zum Beenden von Firefox.

    Deine Dateipfade für die Icons funktionieren nur sehr begrenzt (wenn überhaupt für jemand anderen); ich würde mich da eher an die Standards halten, wie wir sie hier seit längerem und in den meisten aktuellen Scripts haben.

  • Einbindung von Icons in Skripts

    • Horstmann
    • 13. Mai 2025 um 18:58
    Zitat von Mira_Belle

    Und hier nun eine Variante Deines Skripts, bei der nur einmal der Iconname inkl. Dateiendung
    angegeben werden muss.

    ----------

    Ich bau' aber jetzt nicht meine ganzen Skripte um, obwohl mir diese Version des Fallbacks viel besser gefällt.
    Aber vielen Dank für diese tolle Idee.

    Schweet, dankeschön! :):thumbup:.

    Ich denke nicht dass es einen zwingenden Grund gibt deine Version zu ändern, ich war nur auf der Suche nach dem einfachst möglichen Code.
    Auf der Suche bin ich auch mehrfach über Varianten deiner Version gestolpert, kann sein wir haben eine Freundin gemeinsam. ;)

  • Einbindung von Icons in Skripts

    • Horstmann
    • 13. Mai 2025 um 17:56
    Zitat von Mira_Belle
    Code
    let iconURL = buttonicon == + buttonicon + ? "file://" + iconPath : fallbackIcon;

    Funktioniert nicht?

    Nö.

    Wundert mich dass es bei dir funktioniert in dem Code. :/

  • Einbindung von Icons in Skripts

    • Horstmann
    • 13. Mai 2025 um 16:15
    Zitat von Mira_Belle

    Wir haben ja noch etwas "Redebedarf" und so wird das auch noch ein Weilchen dauern!

    Ohne jetzt alles durcheinander bringen zu wollen, aber zum Thema Fallback Icon ist mir noch etwas über den Weg gelaufen; absolut kein AI war dabei involviert! :whistling:

    Der Vorteil wäre evtl. dass der Code schlank ist, keine Funktionen benötigt, und daher nicht durch die Gegend geschoben werden muss.

    Das Einzige was ich nicht schaffe, ist dass der eigene Icon Name nicht 2mal eingetragen werden muss, wie hier in Zeilen 15 und 22. :/

    Nur ein TEST:

    JavaScript
    //  aboutconfig-button.uc.js Fallback Test Mai 2025
    //  Eigenes Icon erwartet in Profilordner/chrome/icons , icons Ordner falls noetig erstellen
    // TEST !!!!!
    
    (function() {
        if (location != 'chrome://browser/content/browser.xhtml') return;
    
        try {
            CustomizableUI.createWidget({
                id: 'aboutconfig_button',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                onBuild: function(aDocument) {
    
                    let buttonicon = "LettersC-1.png";
                    let fallbackIcon = "chrome://global/skin/icons/warning.svg";
    
                    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
                    let iconPath = currentProfileDirectory + "/chrome/icons/" + buttonicon;
    
                    // Fallback Icon benutzt falls eigenes Icon nicht vorhanden
                    let iconURL = buttonicon == "LettersC-1.png" ? "file://" + iconPath : fallbackIcon;
    
                    let toolbaritem = aDocument.createElementNS(
                        'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul',
                        'toolbarbutton'
                    );
                    let props = {
                        id: 'aboutconfig_button',
                        class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                        label: 'About:Config',
                        tooltiptext: 'About:Config',
                        style: 'list-style-image: url("' + iconURL + '");'
                    };
    
                    for (let p in props)
                        toolbaritem.setAttribute(p, props[p]);
                    return toolbaritem;
                }
            });
        } catch (e) { }
    
        document.getElementById('aboutconfig_button')?.addEventListener('click', event => {
            if (event.button === 0) {
                openTrustedLinkIn("about:config", "tab");
            }
        });
    
    })();
    Alles anzeigen

    Icon:

    LettersC-1.png.zip

  • about:about Button

    • Horstmann
    • 12. Mai 2025 um 16:30
    Zitat von Mira_Belle
    Zitat von Dharkness

    So weit so gut, mit welchem Script für eine vertikale Toolbar läuft das Script, mit dem ↓ läuft es hier nicht? ;(

    Nur ein Versuch:!:
    Die Datei heißt ja irgendwas mit V, nehme ich an.
    Setze doch einfach mal 0-"Skriptname" davor und teste dann noch mal.

    Geeeenau, dann funktionieren die Custom Buttons in der Leiste, wie von 2002Andreas in #43 beschrieben.

  • about:about Button

    • Horstmann
    • 12. Mai 2025 um 14:36
    Zitat von 2002Andreas
    Zitat von Mira_Belle

    Es ist in der Tat der Skriptname.

    Dachte ich mir schon.

    Die Skripte werden beim Start vom Fx wohl der Reihenfolge nach aus dem Ordner chrome geladen. Und wenn dann about:about vor der Leiste geladen wird, gibt es das Problem. Betrifft aber auch andere Funktionen/Skripte die aus der Zusatzleiste gestartet werden.

    Ahhh, deshalb habe ich vor langem mal meinen Scripts die komischen Namen gegeben... ^^

    Der alphabetischen/numerischen Reihenfolge der Dateinamen nach, nur um das Detail hizuzufügen; manch einer hat vielleicht seine Ordner Dateien visuell nach Erstellungsdatum, Art etc. sortiert.

    Was aber immer noch nicht erklärt, warum bei geldhuegel manches Script fuktioniert und manches nicht - falls wir davon ausgehen können das die Skriptnamen jeweils die gleichen blieben. ;)

  • about:about Button

    • Horstmann
    • 12. Mai 2025 um 12:37
    Zitat von geldhuegel

    Hi Mira_Belle , vielen Dank für das überarbeitete Skript. Oben neben dem Hauptmenü habe ich einen Button und das Skript zeigt mir auf Klick die about:about Seite. Bei mehreren Fenstern immer im richtigen. Beim ersten Mal hatte ich das Icon noch nicht geändert und es wurde ein Warndreieck angezeigt.

    Nun starte ich "Symbolleiste anpassen", ziehe das Icon nach unten in die Statusleiste (Skript weiter oben) und starte den Firefox neu mit Cache löschen. Entweder über Skript Neustart oder über Fehlerbehebungsmodus. Ergebnis: kein Icon, nur Platzhalter, keine Funktion beim Anklicken.

    Keine Ahnung, was bei mir so anders ist. Ich werde später am Tag das Skript auch auf einem anderen Rechner probieren und melde mich dann wieder.

    Wenn du spasseshalber das mal probieren könntest, und ob es in deiner Statusleiste funktioniert:

    Ich habe in Mira's Script aus #33 var toolbaritem = aDocument.createXULElement('toolbarbutton'); reingepackt von #9, sowie (sollte eigentlich nichts machen) CustomizableUI.registerToolbarNode(tb); und if (!window.gBrowser){return;} .

    Es muss ja einen Grund dafür geben, dass das Script von 2002Andreas bei dir für deine Extraleiste funktioniert, die anderen aber nicht.:/

    Im übrigen gibt es einige Beiträge zu finden, wenn man dieses Form nach Statusleiste durchsucht, inkl. über nicht funktionierende Buttons in manchen Leistenversionen.

    JavaScript
    // JavaScript Document
    // QuickLinkButton-about:about.uc.js
    //TESTSTEST
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    // Nur TEST TEST TEST !!!!!
    
    (function() {
      
        // Test 1
        //if (location != 'chrome://browser/content/browser.xhtml') return;
         
        if (!window.gBrowser){
            return;
        }
     
       try {
          CustomizableUI.createWidget({
             id: 'link-button-about',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {   
             
             // Test 2
             //var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
          
                let toolbaritem = aDocument.createXULElement('toolbarbutton');
                
                let props = {
                   id: 'link-button-about',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'Quicklink: about:about',
                   tooltiptext: 'Quicklink:\nabout:about',
                };            
                for (var p in props) {
                   toolbaritem.setAttribute(p, props[p]);
                }           
                return toolbaritem; 
             }      
          });
          
          // Test 3
          CustomizableUI.registerToolbarNode(tb);
          	    
       } catch(e) {};
    
       document.getElementById('link-button-about').addEventListener('click', event => {
          if (event.button === 0) {
             openTrustedLinkIn("about:about", "tab")
          }
       });
    
       // Pfad zum Profilordner
       let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
       // Pfad in den entsprechenden Unterordner
       let IconPath = '/chrome/icons/';
       // Name & Dateiendung des anzuzeigenden Symbols!
       let ButtonIcon = "firefox.svg";
       // Erstelle ein img-Element, um zu überprüfen, ob die Grafik geladen werden kann
       let img = new Image();
       img.src = "file:" + ProfilePath + IconPath + ButtonIcon;
       
       img.onload = function() {
          // Wenn die Grafik geladen werden kann, setze das listStyleImage
          document.getElementById('link-button-about').style.listStyleImage = 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")';
          document.getElementById('link-button-about').style.color = '#f1b508';    // Hier wird die Iconfarbe direkt gesetzt
       };
       
       img.onerror = function() {
          // Wenn die Grafik nicht geladen werden kann, verwende das Fallback-Icon
          document.getElementById('link-button-about').style.listStyleImage = 'url("chrome://global/skin/icons/warning.svg")';
          document.getElementById('link-button-about').style.color = 'red';    // Hier wird die Iconfarbe direkt gesetzt
       };
    })();
    Alles anzeigen
  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 11. Mai 2025 um 22:46
    Zitat von 2002Andreas

    Dto.

    :):thumbup:

  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 11. Mai 2025 um 21:42
    Zitat von 2002Andreas

    So sieht das hier aus, wenn das Icon nicht vorhanden ist, bzw. nicht gefunden wurde:

    Nur der Hintergrund ändert sich dann hier bei hover:/

    Ohne jetzt tief zu recherchieren, meiner Erinnerung nach benutzt Fx teilweise color als Button Hintergrundfarbe bei hover, bzw. daraus abgeleitet einen Mix mit currentColor, da muss man etwas aufpassen.

    Möglicherweise haben Mira und Fuchsfan woanders weiteren CSS Code, der das anders festlegt.

    Könnte evtl. mehr Sinn machen statt wie in #27 .style.color = 'red'; => .style.fill = 'red'; zu benutzen; wobei JS Styles gerne mal von so ziemlich allem anderen CSS überschrieben werden.

    Oder mal in der userChrome.css #profilefolder-ToolBarButton {fill: red !important;} probieren, oder sowas in der Art.

    Edit: bei mir im Testprofil färbt .style.color = 'red' sowohl das Icon als auch den hover Hintergrund. ;)
    .style.fill = 'red' funktioniert wie erwartet nur für das Icon.

  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 11. Mai 2025 um 16:31
    Zitat von Mira_Belle
    Zitat von Horstmann

    Davon abgesehen, was spricht dagegen den Fallback Code nach unten zu setzen? :/

    Wenn der Code für den Fallback aus der Funktion onBuild: function(aDocument) { genommen wird,
    funktioniert das Skript gar nicht mehr und dem Button, den es ja dennoch gibt, fehlt die Grafik!

    Also der komplette Code von hier funktioniert bei dir nicht (in Zeile 39 bzw 40 halt dein eigenes Icon)? :/

    Der Fallback Code muss generell angepasst werden beim runterkopieren, s. Zeilen 47 und 52, oder halt wie beschrieben in #14.

    In deinem Code von #7 gibt es da auch eine Klammer in Zeile 24, die mir Rätsel aufgibt; aber nach meinem Schema hatte ich deinen Code auch zum Laufen gebracht, nur halt immer schön die Klammern und Satzzeichen beachten. ;)

  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 11. Mai 2025 um 15:18
    Zitat von Mira_Belle

    Danke:!:
    Wohl möglich, ein Mac-spezifisches Problem?

    Dann kümmere ich mich jetzt erst einmal um die anderen Skripte.

    Was mir aber nicht klar ist, welche Script Version hat denn wer jetzt wie getestet? ;)

    Bei mir etwa funktioniert dein Script aus #7 nicht mit Szenario aus #18.
    Kann aber tatsächlich ein Mac Problem sein, ich glaub's aber nicht.

    Davon abgesehen, was spricht dagegen den Fallback Code nach unten zu setzen? :/

  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 10. Mai 2025 um 20:34
    Zitat von Mira_Belle

    Horstmann Habe so eben noch einmal den Elchtest mit ButtonProfilordner.uc.js gemacht!
    Habe die Ausfallroutine aktiviert, neues Fenster geöffnet, und auch da ist das Symbol (die Grafik) sichtbar!
    Auch ist die Funktion gegeben. :/

    Also: Erstes Fenster ist Fenster A, dann neues Fenster B öffnen.

    Dann Fenster A schliessen, dann zusätzlich zu Fenster B noch ein Fenster C öffnen --> Fenster C hat Buttonfunktion, weil die Funktion nach unten bewegt wurde; Icons hat Fenster C keine, weil diese beiden Funktionen (Icon und Fallback) nicht bewegt wurden.

    Ist evtl. Problem #3 wegen dem extra nötigen Schritt in Windows, aber das gleiche Prinzip.

  • Einbindung von Icons in Skripts

    • Horstmann
    • 10. Mai 2025 um 16:21
    Zitat von Horstmann

    Das erhoffte Ergebnis:

    Mist, die CSS Datei wird doppelt geladen; wenn man in den Browser Werkzeugen unter Stilbearbeitung schaut, findet man profilesbutton_external.css doppelt gelistet; physisch existiert die Datei nur einmal.... X/

  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 10. Mai 2025 um 13:02
    Zitat von Mira_Belle
    Zitat von FuchsFan

    Besser sie sind fertig nutzbar. ;) :)

    Habe mal nur einfach Links gesetzt!
    Wenn ich nicht weiter komme, kann ich ja das betreffende Skript
    mit einer Anfrage in einem neuen Thread posten.

    # ----------------------------------------------------------------------------------------------------------- #

    .....

    :thumbup:

    Soll ja kein Sammelthread werden. ;)
    Für viele Scripts gibt's ja auch schon eigene Threads.

    Alternative Lösungen, bzw. welche für anders aufgebaute Codes, mit Beispielen oder Links zu Lösungen wären natürlich prima. :)

    Es gibt ja auch noch verwandte Problematiken wie hier oder hier.

  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 10. Mai 2025 um 12:26
    Zitat von FuchsFan

    ...wie müsste der Ablauf z.B. für about:about, oder auch Konsole aussehen, bekomme es nicht gebacken.


    Ja, das schon, aber ich war immer der Meinung, dass meine Scripte funktionieren, leider nicht.

    Deine Scripts funktionieren schon, nur halt mit einem mE kleinen Fehler, den viele User oft gar nicht wahrnehmen.
    Weil ich am Mac bin und 2 Monitore habe, kommt der Fehler bei mir häufig vor.

    Bzgl. about:about, das könnste mal probieren:

    JavaScript
    //  aboutabout-button.uc.js V3 Mai 2025
    //  Fallback Icon Fix von Mira_Belle
    //  Eigenes Icon erwartet in Profilordner/chrome/icons , icons Ordner falls noetig erstellen
    
      (function() {
    
       if (location != 'chrome://browser/content/browser.xhtml') return;
    
        try {
            CustomizableUI.createWidget({
                id: 'aboutabout_Button',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                onBuild: function(aDocument) {
                    var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                    var props = {
                        id: 'aboutabout_Button',
                        class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                        label: 'About:About',
                        tooltiptext: 'About:About',
                    };
                    for (var p in props)
                        toolbaritem.setAttribute(p, props[p]);
                    return toolbaritem;
                }
            });
        } catch(e) { }
    
        document.getElementById('aboutabout_Button').addEventListener('click', event => {
          if (event.button === 0) {
            openTrustedLinkIn("about:about", "tab");
          }
        });
    
        // Fallback Icon
        // Pfad zum Profilordner
        let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
        // Pfad in den entsprechenden Unterordner
        let IconPath = '/chrome/icons/';
        // Name & Dateiendung des anzuzeigenden Symbols!
        let ButtonIcon = "Letters_A-1.png";
        // Erstelle ein img-Element, um zu überprüfen, ob die Grafik geladen werden kann
        let img = new Image();
        img.src = "file:" + ProfilePath + IconPath + ButtonIcon;
    
        img.onload = function() {
            // Wenn die Grafik geladen werden kann, setze das listStyleImage
            aboutabout_Button.style.listStyleImage = 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")';
        };
    
        img.onerror = function() {
            // Wenn die Grafik nicht geladen werden kann, verwende das Fallback-Icon
            aboutabout_Button.style.listStyleImage = 'url("chrome://browser/skin/fxa/avatar-empty.svg")';
        };
    
    })();
    Alles anzeigen

    Der Ablauf ist für diese Art von Scriptaufbau einfach:

    Wenn du dir das Beispielscript in #1 anschaust, du nimmst den hier oft gesehenen Fix #1 kompletten Codeblock, inkl. aller Satzzeichen, und setzt ihn unter } catch(e) { }.

    Dann ersetzt du in diesem Fall toolbaritem mit document.getElementById('aboutabout_Button'), weil du den Button an der Stelle neu aufrufen musst.

    aboutabout_Button ist einfach die weiter oben festgelegt ID des Buttons.

    An der Stelle der Tip, für ID, class etc. keine Bindestriche zu benutzen, also aboutabout_Button statt aboutabout-Button, weil man dann diese ID je nach Zusammenhang direkt und ohne document.getElementById benutzen kann (s. Fallback Code).


    Noch ein Nachtrag: die Lösungen, wenn sie denn auch für alle funktionieren, basieren auf vielen Diskussionen und Codevarianten aus diesem Forum; allen voran viele Beiträge von BrokenHeart zu diesem Thema. :):thumbup:

  • about:about Button

    • Horstmann
    • 10. Mai 2025 um 11:05

    Moment mal.:!:

    Ich in #2, und Mira_Belle in #10 benutzen ->

    var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');

    2002Andreas in #9 benutzt aber var toolbaritem = aDocument.createXULElement('toolbarbutton');

    Wie vermutlich viele von uns, kopiere ich solche Sachen idR aus alten Scripts in neue, ohne gross nachzudenken, solange es funktioniert.

    Gedanken dazu?
    Könnte das mit Fremdtoolbarleisten ein Problem erzeugen, oder generell? :/

    Hier #2 und #9 nochmal zum Vergleich; Zeile 39 bzw. 15:

    JavaScript
    /* aboutabout_ToolbarButton.uc.js */
    //  aboutabout-button.uc.js
    
      (function() {
    
           var css =`
        #aboutabout-ToolBarButton > image {
        display: none !important;
    }
    
    #aboutabout-ToolBarButton > label {
        display: flex !important;
        background-color: lightgreen !important;
        color: red !important;
        outline: 1px solid red !important;
        outline-offset: -1px !important;
    }
    
    #aboutabout-ToolBarButton:hover > label {
        background-color: green !important;
        color: cyan !important;
        outline: 1px solid purple !important;
        outline-offset: -1px !important;
    }
      `;
    
      var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
      var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
      sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
       if (location != 'chrome://browser/content/browser.xhtml') return;
    
        try {
            CustomizableUI.createWidget({
                id: 'aboutabout-ToolBarButton',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                onBuild: function(aDocument) {
                    var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                    var props = {
                        id: 'aboutabout-ToolBarButton',
                        class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                        label: 'About:About',
                        tooltiptext: 'About:About',
                        /* style: 'list-style-image: ', */
                        //onclick: 'if (event.button == 0) { \
                        //                    openTrustedLinkIn("about:about", "tab");\
                        //             }; '
                    };
                    for (var p in props)
                        toolbaritem.setAttribute(p, props[p]);
                    return toolbaritem;
                }
            });
        } catch(e) { };
    
        document.getElementById('aboutabout-ToolBarButton').addEventListener('click', event => {
        if (event.button === 0) {
             openTrustedLinkIn("about:about", "tab");
            }
        });
    
    })();
    Alles anzeigen


    JavaScript
    (function() {
    
        if (!window.gBrowser){
            return;
        }
    
        try {
           CustomizableUI.createWidget({
              id: 'about-button',
              type: 'custom',
              defaultArea: CustomizableUI.AREA_NAVBAR,
              onBuild: function(aDocument) {         
                var currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
    			var buttonicon = "A.png";
                var toolbaritem = aDocument.createXULElement('toolbarbutton');
                var props = {
                    id: 'about-button',
                    class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                    removable: 'true',
                    label: 'about:about',
                    accesskey: '',
                    tooltiptext: 'about:about',
                    style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) + '");'
                 };            
                 for (var p in props)
                    toolbaritem.setAttribute(p, props[p]);            
                 return toolbaritem; 
              }      
           });
    	    CustomizableUI.registerToolbarNode(tb);
           } catch(e) { };
    
            document.getElementById('about-button').addEventListener('click', event => {	
    		    
            if (event.button === 0) {
            
    		openTrustedLinkIn('about:about',"tab");  
                
            }
        });
    
    })();
    Alles anzeigen
  • about:about Button

    • Horstmann
    • 10. Mai 2025 um 10:40
    Zitat von geldhuegel

    Sobald ich die Versionen in die Statusleiste aus Beitrag #25 verlege habe ich zwar Buttons, aber keine Funktion.

    Ich habe dabei das Problem, dass diese Statusleiste bei mir nicht funktioniert, aber uU wegen meinem alten Firefox...

  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 10. Mai 2025 um 10:26
    Zitat von Mira_Belle


    Es ist eine überarbeitete Version, die sowohl den Fix von Horstmann enthält als auch den Fallbackfix!

    Ahem, nur leidet der Fallback Fix unter Problem #1 ;) - der Code dafür müste auch nach unten, etwa so:

    JavaScript
    // ButtonProfilordner.uc.js
    // Öffnen des "Profilordners"
    
    (function() {
    
        if (location != "chrome://browser/content/browser.xhtml") return;
        try {
            CustomizableUI.createWidget({
                id: 'profilefolder-ToolBarButton',
                type: 'custom',
                onBuild: function(aDocument) {
                    let toolbaritem = aDocument.createXULElement('toolbarbutton');
                    let props = {
                        id: 'profilefolder-ToolBarButton',
                        class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                        label: 'Profil-Ordner',
                        tooltiptext: 'Profil-Ordner öffnen',
                    };
                    for (var p in props)  {
                        toolbaritem.setAttribute(p, props[p]);
                    }
                    return toolbaritem;
                }
            });
    
        } catch(e){}
    
        document.getElementById('profilefolder-ToolBarButton').addEventListener('click', event => {
            if (event.button === 0) {
                Services.dirsvc.get("ProfD", Ci.nsIFile).launch();
                }
            });
    
            // Pfad zum Profilordner
            let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
            // Pfad in den entsprechenden Unterordner
            let IconPath = '/chrome/icons/';
            // Name & Dateiendung des anzuzeigenden Symbols!
            //let ButtonIcon = "prof.png";
            let ButtonIcon = "LettersP-1m.png";
            // Erstelle ein img-Element, um zu überprüfen, ob die Grafik geladen werden kann
            let img = new Image();
            img.src = "file:" + ProfilePath + IconPath + ButtonIcon;
    
            img.onload = function() {
                // Wenn die Grafik geladen werden kann, setze das listStyleImage
                document.getElementById('profilefolder-ToolBarButton').style.listStyleImage = 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")';
            };
    
            img.onerror = function() {
                // Wenn die Grafik nicht geladen werden kann, verwende das Fallback-Icon
                document.getElementById('profilefolder-ToolBarButton').style.listStyleImage = 'url("chrome://browser/skin/fxa/avatar-empty.svg")';
            };
    
    })();
    Alles anzeigen
  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 10. Mai 2025 um 09:35
    Zitat von Mira_Belle

    Für die Dateipfade zu den Icons besser so etwas nutzen!
    Es ist da auch schon ein Fallback "eingebaut" falls irgendetwas klemmt.

    Danke!:):thumbup:
    Ich Schlaumeier hab mein einziges Script mit diesem Dateipfad - der bei mir am Mac nichtmal geht - als Beispiel benutzt, und dann auch noch FuchsFan deswegen angemeckert...:whistling:

  • Buttons funktionieren nur im/ für das erste Fenster

    • Horstmann
    • 9. Mai 2025 um 21:57
    Zitat von FuchsFan
    Zitat von Horstmann

    Nicht bei mir

    Stimmt, das habe ich nicht in der richtigen Reihenfolge gemacht.:rolleyes:

    Dann habe ich dieses noch, ist im Aufbau fast deinem ähnlich. Kannst ja mal probieren.

    Dankeschön, aber gleiches Spiel; sowohl Problem #1 als auch #2.:/
    Und noch eine Kleinigkeit: die Dateipfade für die Icons url("file:///C:/... funktionieren vermutlich auf Windows, aber nicht hier am Mac, also nicht perfekt für Kompatibilität.

Unterstütze uns!

Jährlich (2025)

101,9 %

101,9% (662,48 von 650 EUR)

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