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

Beiträge von Speravir

  • Abstand der Lesezeichen

    • Speravir
    • 2. Juni 2025 um 01:29

    Eine mögliche Ursache: Die Dateien müssen in UTF-8 (ohne BOM) kodiert sein. Solange man nur A-Za-z0-9 verwendet, gibt es keinen Unterschied zu ASCII, aber wehe, man verwendet so etwas wie die deutschen Umlaute oder das ß – und genau davon sehen wir ein Zeichen gleich in der ersten Zeile sowie eines in der vierten.

    Das ist mir selber schon gelegentlich auf die Füße gefallen.

  • Seit FF139 geht das script nicht mehr: allow_search_oneoff_with_empty_text.uc.js

    • Speravir
    • 2. Juni 2025 um 01:22

    Das Skript ist eigentlich überhaupt nicht mehr notwendig: Einfach Shift+Enter drücken, wenn der Fokus (Cursor) im Suchfeld ist. Oder was kann das Skript, was darüber hinaus geht?

  • Mozilla veröffentlicht Firefox 138 mit neuer Profilverwaltung

    • Speravir
    • 2. Juni 2025 um 01:17
    Zitat von .DeJaVu

    Kann es sein, dass mit Firefox 139 der Ordner Profile Groups mit SQL-Datei trotz der Schalter aus #5 und #7 angelegt werden?

    Zitat von Sören Hentzschel

    Ich habe es nicht geprüft, aber möglich ist das natürlich.

    DeJaVus Frage war wohl eher rhetorisch. Jedenfalls ist bei mir ebenso solch ein Ordner angelegt worden. In ihm gibt es bisher ausschließlich eine SQLite-Datei, deren Dateiname der in den Einstellungen hinterlegten StoreID (in toolkit.profiles.storeID) entspricht. Die schon genannte andere Einstellungen browser.profiles.enabled steht auf false.

  • UndoListInTabmenuToo mit funktionierendem Tooltip

    • Speravir
    • 1. Juni 2025 um 00:05
    Zitat von 2002Andreas

    Nur so ein Gedanke, aber wäre es nicht sogar besser, das Skript würde dann hier stehen :/ userChrome.js/Firefox 139 at master ·

    Na ja, das funktioniert bereits früher, wobei hier die verursachenden Änderungen dann doch erst in Fx 136 aktiv wurden. Alice und anscheinend auch Endor packen die Skripte immer in ein Verzeichnis für die Firefox-Version, ab der die vorherige Skript-Version nicht mehr (vollständig) funktioniert, auch bei weiteren Änderungen (Alice hat vor etwa einem Monat ein Update für ein Skript im Verzeichnis für V. 128 gemacht) – was es für Nutzer schwierig macht, das zu verfolgen, und auch nicht der Sinn der Versionsverwaltungssoftware hinter GitHub ist. (Ich hab aber gut zu meckern, der ich noch nie einen Pull request abgeschickt habe.)

  • UndoListInTabmenuToo mit funktionierendem Tooltip

    • Speravir
    • 31. Mai 2025 um 01:39

    Von dem Skript schwirren mehrere Versionen herum, sodass ich gar nicht weiß, wohin ich ich am besten verlinken soll, aber von Mira_Belle gibt es zwei (ich weiß nicht, welche davon sie inzwischen selbst benutzt), in denen sie aber den problematischen Teil auskommentiert bzw. entfernt hat: Version 1 – Version 2.

    Ich selbst beziehe mich auf die von Alice0775 zuletzt für Firefox 135 aktualisierte Version des Skriptes: UndoListInTabmenuToo.uc.js. Man muss dort die Zeile 145 ändern:

    • aktiv, defekt (auch mit Fehlermeldung im Log):
    JavaScript
    undoPopup.childNodes[i + 2/*restore all, sep*/].setAttribute("tooltiptext", tooltiptext);
    • neu, mit funktionierendem Tooltip:
    JavaScript
    undoPopup.childNodes[i].setAttribute("tooltiptext", tooltiptext);

    Alice ist informiert. Mal sehen, ob eine Reaktion erfolgt, denn auf die ursprüngliche Meldung hin kam nichts.

    Ich habe für mich die englischen Menütexte übersetzt:

    • Zeile 80: "Recently Closed Window List" → "Geschlossene Fenster"
    • Zeile 92: "Recently Closed Tab List" → "Geschlossene Tabs"
    • Zeile 152: "Clear undo close tab list" → "Liste geschlossener Tabs leeren"
    • Zeile 192: "Clear undo close window list" → "Liste geschlossener Fenster leeren"
  • Tabgruppen als Lesezeichen speichern und reaktivieren

    • Speravir
    • 20. Mai 2025 um 21:42
    Zitat von Neuer072

    Hallo, wie kann ich die Tabgruppen als Lesezeichen sichern und diese später exakt in der gleichen Anordnung wieder übersichtlich öffnen?

    Ich habe es eben bei einer Suche nach tab groups bei AMO gefunden und nicht selbst ausprobiert, aber von der Beschreibung her könnte dir das Addon Tab Stash helfen, vor allem, wo laut Versionsgeschichte in der jüngsten Version eine Export- und Importfunktion eingeführt wurde die Export- und Importfunktion in Bezug auf Tabgruppen erweitert wurde.

  • Entwicklung Firefox

    • Speravir
    • 20. Mai 2025 um 21:36

    Ähm, ich hab das gar nicht als Fehlermeldung aufgefasst. Ich habe aber auch gar nicht erwartet, da etwas Funtkionierendes zu finden. In der Vergangenheit war es doch aber immer mal wieder so, dass Funktionen testweise auch früher freigeschaltet werden konnten, nur deshalb habe ich überhaupt mal nachgesehen.

  • Entwicklung Firefox

    • Speravir
    • 20. Mai 2025 um 21:25
    Zitat von Mira_Belle

    Erstaunt ich bin.
    Habe ich doch in der aktuellen Version diesen Schalter ausprobiert, und es funktionierte.

    Ich kann bestätigen, dass der Schalter bei mir in Version 138.0.4 in about:config bekannt war und nach Aktivierung der zusätzliche Eintrag zu sehen ist. Es wird aber, wenig überraschend, als einziger Eintrag ModelHub undefined angezeigt.

  • Probleme mit Version 138.0.1 bei Web.de

    • Speravir
    • 10. Mai 2025 um 04:35
    Zitat von .DeJaVu
    Zitat von michmisch

    Angabe eines RGB-Wertes sehe ich nicht.

    Ich widerspreche. Die gezeigte Farbe ist keine Vorgabe von Firefox. Also hast du diese ausgewählt und in jenem Dialog sind unten rechts bestimmte Angaben zu sehen. Aber was du bemängelst, ist kein Umstand der Farbe, siehe meine Antwort davor.

    Du hast zwar grundsätzlich Recht, aber statt wieder einmal unfreundlich mit einem unerfahrene Benutzer umzugehen, hättest Du ihn einfach darauf hinweisen sollen, dass er auf das Farbfeld drücken soll und dann die Farbwerte ansagen soll, was Roadrunner für dich nachgeholt hat. Oder Du hättest die Farben selbst ermitteln können, beispielsweise mit der im Firefox integrierten Farbpipette (Wähle mit der Farbpipette in Firefox die Farben aus - Mozilla.org).

    Es ergibt sich: unbesuchter Link #0000A0 oder rgb(0,0,160), besuchter Link #B82106 oder rgb(184,33,6).

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

    • Speravir
    • 10. Mai 2025 um 03:26
    Zitat von Mitleser

    Kleine Anmerkung:
    Das Script aus RE: userChrome.js Scripte für den Fuchs (Diskussion) funktioniert wie erwartet (Änderung der Animation sowie des Icons ausschließlich im aktiven Fenster).

    Ach stimmt, das wollte ich ja noch ausprobieren.

    Zitat von Horstmann

    Ich weiss immer noch nicht was das Script machen soll, also auch nicht wie ich es selber testen könnte.

    Das vom Mitleser? (Edit: Ach, hattest Du mich am letzten Dienstag ja schon mal gefragt.) Dasselbe wie AnimationToggleButton in meinem Beitrag Nr. 4443: Es wird die Einstellung image.animation_mode auf einen von drei möglichen Werten geändert und dann die aktuelle Seite neu geladen (sollte es zumindest), wobei sich auch der Button selbst ändert/ändern sollte. Das Ergebnis kann man mit allen animierten Grafiken testen, Beispiele (alle Wikimedia Commons):

    • File:Foucault pendulum animated.gif
    • File: Newtons cradle animation book 2.gif
    • File:The one ring animated.gif
    • File:3d2.png
    • File:Animated PNG example bouncing beach ball.png

    Animierte Webp werden ebenso behandelt, da müsste man dann aber das Bild selbst noch laden, Beispiel File:Endlosschleife durch Batchdatei (Windows 8.1).webp (Direktlink zur Datei, 1400×1080px).

    Es wäre übrigens tatsächlich mal interessant, was man in MacOS statt des Mittelklicks tun muss.

  • Mar Update funktioniert von Version 138.0 auf 138.0.1 nicht mehr

    • Speravir
    • 10. Mai 2025 um 01:33
    Zitat von schlingo

    das MSI-Paket enthält aber doch die vollständige Installation und ist damit größer als das MAR-Paket, das nur die Änderungen zur direkten Vorgängerversion enthält.

    Nur der Vollständigkeit halber und zur Klarstellung: Die für die Updates gedachten und verwendeten xxx.partial.mar sind deutlich kleiner als die MSI-Datei, aber die xxx.complete.mar ist um einige MB größer. (xxx steht für Versionsnummern, im Falle der partiellen Updates für von–zu).

  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Speravir
    • 10. Mai 2025 um 01:22
    Zitat von Zitronella

    aber da ich gewohnt war, dass alles Auskommentierte in Notepad++ sich in grün verwandelt und dies in diesem Fall nicht so war, dachte ich es wäre falsch

    Weil Du eine Javascript-Datei geöffnet hattest, wurde die Syntaxhervorhebung für Javascript aktiviert, bist aber im CSS-Bereich, der entweder als Zeichenfolge (String) innerhalb von Anführungszeichen oder als Literal innerhalb von Gravis-Zeichen (Backticks) eingefügt werden muss, Du könntest die Sprache von Hand auf CSS umstellen, solltest dir dann aber bei größeren Skripten vorher die Zeilenzahl merken, an der der CSS-Teil beginnt, weil es sonst länger dauern kann, bis man ihn wiederfindet (ist mir selber schon so ergangen).

  • Einbindung von Icons in Skripts

    • Speravir
    • 9. Mai 2025 um 00:25
    Zitat von Sören Hentzschel

    Es ist besser, weil du am Ende trotzdem eine Bild-Datei einbindest und diese gecacht werden kann.

    Aha, danke! Das ist, was hier zählt.

    Zitat von Sören Hentzschel

    Inline-CSS sollte man, sofern möglich, eher vermeiden als dass es eine sinnvolle Empfehlung ist.

    Da sind wir ja einer Meinung, aber ich wollte das nicht einfach so schreiben, sondern suchte nach externen Belegen.

    Zitat von Sören Hentzschel

    Aber Google interessiert es weder, wie das CSS eingebunden wird (ich kann mir höchstens indirekte Faktoren vorstellen, wie dass tausende Zeilen CSS in einer HTML-Datei das Dokument größer machen), noch sind Googles Suchmaschinen-Algorithmen für Firefox-Scripts relevant.

    Du hast ja sowas von Recht – speziell an den letzten Teilsatz hätte ich auch selbst denken können, allerdings ging es mir um das Cachen der Symbolbilder – nur fand ich dann solche Seiten und genau darauf bezog ich mich:

    • Improve site performance by inlining your CSS - LogRocket Blog
    • Inline CSS Definition – Verstehen Sie die Basics
    • Inline CSS vs. CSS-Datei » fastWP
  • userChrome.js Scripte für den Fuchs (Diskussion)

    • Speravir
    • 9. Mai 2025 um 00:04
    Zitat von moko2000

    Danke. Ich weiß nicht, wie ich zitieren soll.

    • Alles zitieren: rechts unten auf das Anführungszeichen “ drücken.
    • Nur Teile zitieren: mit Maus markieren und entweder mehrere Zitate speichern und dann ganz unten auf die Schaltfläche mit „Ein Zitat“ oder „2 Zitate“ (zählt hoch, wenn mehr) gehen und dann auswählen oder gleich den ausgewählten Text als Zitat einfügen in den Editor für die Antworten einfügen lassen.
    Zitat von moko2000

    AnimationToggleButton.uc.js funktioniert jetzt im zweiten Fenster.
    In diesem Fall bleibt die GIF-Animation im ersten Fenster gleich, aber nur die Schaltfläche ändert sich.

    Dadurch, dass man mit Hilfe des Skriptes eine Einstellung im Firefox ändert, die im gesamten Profil gültig ist, lässt sich letzteres meines Wissens nach nicht verhindern.

  • Skript VerticalToolbar.uc.js funktioniert in neu erstellten Profilen nicht mehr richtig

    • Speravir
    • 8. Mai 2025 um 23:24
    Zitat von grisu2099

    Fall gelöst: :)

    Der Übeltäter war

    Aah. Danke für die Rückmeldung!

  • Einbindung von Icons in Skripts

    • Speravir
    • 8. Mai 2025 um 01:56

    Nur als Ergänzung, denn die Variante hier ist vermutlich gut verständlich, ich würde nur die Zeile mit dem ProfilePath, die ja nicht konfiguriert werden soll, weiter nach unten schieben, direkt vor die derzeitige Zeile 9:
    Um mich selbst zu zitieren, meine gestrige Antwort auf Mira_Belle an anderer Stelle:

    Zitat von Speravir
    Zitat von Mira_Belle

    Und lassen sich so zum Bleistift einbinden.

    Das kann man sogar zusammenfügen: Zeile 1 und 2 vertauscht, Variablenname angepasst:

    JavaScript
    let ButtonIcon = "default_icon.svg"; // Name & Dateiendung des anzuzeigenden Symbols!
    let IconPath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons', ButtonIcon )); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner

    Und dann Zeile 6 entsprechend geändert:

    Code
    #browser-toolbox-button { list-style-image: url("${IconPath}") }

    Und die Einbindung als List-Style-Image mag zwar meistens so sein, aber es ist auch möglich, dass ein Symbol als Hintergrundbild eingebunden wird.

    Endor hat geschrieben, dass er kaum Zeit hat. Man müsste ihm daher möglichst detailliert

    • jedes so geänderte Skript fertig anbieten, einige Skripte müssten übrigens demnächst sowieso einen Hinweis erhalten, dass sie nur funktionieren, wenn die Einstellung security.allow_unsafe_dangerous_privileged_evil_eval auf true gesetzt wird;
    • das dazu gehörende Bild oder die dazu gehörenden Bilder bereitstellen; die Dateinamen der Bilder müssten sich auf das dazugehörende Skript beziehen und zur Unterscheidung einen Zusatz wie true/aktiv/active/enabled/on bzw. false/inaktiv/inactive/disabled/off erhalten oder im Beispiel AnimationToggleButton.uc.js dann eben normal, once und none,
    • einen Text schreiben, den er als Readme bereitstellen kann.

    Wo diese Bilder zu finden sind, müsste am besten im Skript selbst benannt werden. Endor, ich glaube, ein eigenes Verzeichnis Icons oder Bilder wäre sinnvoll. Ein einziges icons.zip halte ich jedenfalls nicht für ideal: Das müsste bei jedem neuen Skript oder sonst möglichen Änderungen neu gepackt werden und, wenn man dann ein neues Skript herunterlädt, auch jedes Mal vollständig heruntergeladen werden, obwohl man nur die neuen Symbole haben will.

    Und noch etwas Mira_Belle und Horstmann. Ich finde jetzt auf die Schnelle die Stelle nicht mehr, wo ihr etwas von Einbindung ohne CSS schreibt: Das hier ist verstecktes Inline-CSS:

    Code
    menuitem.style.listStyleImage = 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")';

    Und das ist dann auch nicht allzu viel besser als base64-Bilder, oder irre ich mich da, Sören Hentzschel?

    (Ich bemerke gerade, dass diverse Seiten Inline-CSS empfehlen, weil Google externes CSS als negativ bewerten soll, dabei aber internes CSS meinen, zum Verständnis beispielsweise Was ist der Unterschied zwischen Inline-, Internen- und Externen-CSS?)

  • Mar Update funktioniert von Version 138.0 auf 138.0.1 nicht mehr

    • Speravir
    • 8. Mai 2025 um 00:26

    Sören, meine Antwort sollte nur als zusätzliche Information dienen, weil Du das, worauf Du dich bezogen hast, nicht zitiert hat und man beim schnellen Überfliegen Deine Aussage missinterpretieren kann. Mir ist es nämlich selbst zunächst so ergangen und ich hatte meine Replik zuerst auch anders formuliert, nur ist mir zum Glück noch ein Licht aufgegangen.

  • Mar Update funktioniert von Version 138.0 auf 138.0.1 nicht mehr

    • Speravir
    • 7. Mai 2025 um 01:56
    Zitat von Sören Hentzschel

    Diese Archive beinhalten lediglich die Änderungen zwischen den Versionen und nicht das komplette Programm.

    Nur als Info, im von Milupo verlinkten Pfad findet man eine Datei firefox-138.0.1.complete.mar. Neben der Dateibezeichnung lässt auch die Dateigröße darauf schließen, dass es sich hier nicht nur um Änderungen zu vorigen Version handelt. Du hattest dich mit Deiner Aussage aber auf die internen Updates bezogen.

  • Skript VerticalToolbar.uc.js funktioniert in neu erstellten Profilen nicht mehr richtig

    • Speravir
    • 7. Mai 2025 um 01:38
    Zitat von grisu2099

    Das folgende Skript funktioniert nicht mehr richtig - allerdings nur in neuen Profilen. In bestehenden Profilen, egal ob Release oder Nightly, läuft es einwandfrei. :/

    Hast Du in den bestehenden Profilen eventuell per Userskript erzeugte Schalter enthalten? Ich nutze addonbar_vertical.uc.js von Aris und dort ist bei mir genau das der Fall, siehe Issue bei Aris: Script addonbar_vertical: addon buttons disappear · Issue #88, vor allem das eingebettete Video. Mit diesem Workaround funktioniert dieses Skript aber bei mir – nur gelegentlich muss ich kurz mal die Leiste ein. und aufklappen lassen, und zwar wenn Buttons von allein in der Adressleiste auftauchen.

    Wenn ja, müsstest Du die in der Leiste vermissten Schalter im Erweiterungsmenü finden, wie auch im Video zu sehen ist.

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

    • Speravir
    • 7. Mai 2025 um 01:15
    Zitat von Mitleser

    könnte es auch sein, dass einfach nur der Reload im falschen Fenster stattfindet? Dass z.b.: event.target.ownerGlobal.BrowserCommands.reloadSkipCache();statt BrowserCommands.reloadSkipCache(); schon reichen würde?

    Das kann sein. Ich hab das mangels Kenntnis dieser Anweisungen nicht getestet.

    Zitat von Horstmann

    Müsste die Funktion an sich dann nicht auch nach unten?

    Hmm. Ich habe diese bei mir funktionierende Version und genau das getan:

    JavaScript
    /* AnimationToggleButton.uc.js, Symbole von Zitronella,
     * https://www.camp-firefox.de/forum/thema/133649/
     * Änderungen von Brokenheart: https://www.camp-firefox.de/forum/thema/133649/?postID=1187103#post1187103
     * Änderungen von Endor: https://www.camp-firefox.de/forum/thema/137909/?postID=1249534#post1249534 (anderer Thread)
     * (Speravir: alten Tooltiptext und alte Symbole wieder eingefügt),
       letzte Änderung: https://www.camp-firefox.de/forum/thema/112673/?postID=1271468#post1271468
    */
    
    (function() {
    if (!window.gBrowser) return;
    
    const
    	buttonID = 'animation-button',
    	configPref = 'image.animation_mode',
    	dataAttrib = 'data-animmode',
    	labelText = 'Animation',
    	tooltipText =
    `Linksklick: GIF-Animationen einschalten
    Mittelklick: Animation einmal abspielen
    Rechtsklick: Ausschalten`,
    	css =
    `#${buttonID}{
    &[${dataAttrib}="normal"] {list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABbElEQVR42sWTP6vBURjHfy9DdiarDAZZhBhs/iS/SWGQMlBkIKKUuyMSCwklgxTyFmwWZq/BR8+x3Fu6Nwz31Klvp/N8nuf7PR1Ne2EZjcYvm81GMpmk3W7z62WDwaBLQblcJpfLoes6x+ORzWaDy+Uin88/B1gsFiqVCtPplFAoxGq1Yr1e43Q6CQQC+Hy+n4VWqxW73U6r1eJ6vZJKpZCuUuhwOPjT13w+p1qt4vF4yGazmEwmXslFi8fjZDIZvF6v8ildZdREIoHb7SYYDCotDUTLhJJBLBbD7/ejpdNp+v0+hUKBy+VCs9lUGZxOJxqNBrVaTWmZsl6vcz6fKZVKdDoder0emtlsVonOZjP2+z3L5ZLJZMJut1N6PB6r88ViofThcEBsb7dbFbKyMRqNuN1uL2+xrwBi4R2AZPYRIBwOPwASxkeAbrf7z4DBYPAWIBKJPADFYlG98XA4fLolZHnq72fy2aLRKHfeRoLqwjwI3AAAAABJRU5ErkJggg==")}
    &[${dataAttrib}="once"] {list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaElEQVR42p2TvYrCUBSE72OIvVa2ksIipBENWKRTQ0gqQVOIYKEgpIhYCIL7AAmx0EYRLcRCAip5BTsbrX0GR04s3PwsbDwwzQ3fnDsTLmMJJp1O/3Ach1arBWawt/6aVCqlEWCaJnq9HjRNw+Vygeu6HzjOIJfLYTgcYr1eo1arYb/f43A4QBAESJIUhEn5fB6FQgHT6RSPxwO6roO2EsjzfHBDGKbZbrcYjUYol8vodrvIZDLxueJgmkajgU6nA1EU/Zy0la7abDZRKpVQrVYj1y4Wi1BVFZVKBazdbmM2m2EwGOB+v2MymfgdXK9XjMfjCHy73WAYBizLguM4YNlsFv1+H5vNBufzGbvdDqvVCqfTKQIvl0t4ngeKfTwe/ZL9GIvFAs/nM6AwHP5Oovi+AUVICpOos4jBf2FSvV5/G1AZSeGAgW3bieGAwTfwx+BLmCTLctBgPp/HikqmX/37jB6boih4AcQgRNTa5HaFAAAAAElFTkSuQmCC")}
    &[${dataAttrib}="none"] {list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABbUlEQVR42p2TP6uCYBjF/RY32lqaWqOhQVyigoa2/iA6CdUgQUNB0FA0BEH3AxQ56FKIDdEQgopfoa2l5j6Dp/u8F+J69cK1B87i6+887zkixyWYdDr9WSgU0O12EXAc058vp1IpmYDpdIrhcAhZlnG5XGDb9guONcjlcpjNZjBNE81mE6fTCefzGYIgoF6vh2BmkM/nUSwWsVqt8Hg80Ov1QFsJ5Hk+tCEC0xwOB8znc1QqFQwGA2QymY+4SLEwjaIo6Pf7qFarLCdtpat2Oh2Uy2U0Go3ItUulEiRJQq1WA6eqKjRNw3g8xv1+x3K5ZB1cr1csFosIfLvdMJlMsF6vsd1uwWWzWYxGI1iWBc/zcDwesd/v4bpuBN7tdvB9HxTbcRxWMothGAaCIAjrFxw5/xLFZwYUISlMos6iBv+ESa1W69uAykgKhww2m01iOGTwDvwyeBcmtdvtsIGu67GikulT/3xGP5soingC1EBhpA0JGaMAAAAASUVORK5CYII=")}}`;
    
    let prefVal = Services.prefs.getCharPref(configPref);
    
    try {
    	CustomizableUI.createWidget({
    
    	id: buttonID,
    	type: 'custom',
    	defaultArea: CustomizableUI.AREA_NAVBAR,
    
    	onBuild: function(aDocument) {
    		let tb_button = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
    		let attributes = {
    				id: buttonID,
    				class: 'toolbarbutton-1 chromeclass-toolbar-additional',
    				removable: 'true',
    				label: labelText,
    				tooltiptext: tooltipText
    		};
    		for (let a in attributes) tb_button.setAttribute(a, attributes[a]);
    		tb_button.setAttribute(dataAttrib, prefVal);
    		tb_button.IsOnce = (prefVal == 'once');
    
    		return tb_button;
    	}
    	});
    } catch(e) {};
    
    document.getElementById(buttonID).addEventListener('click', event => {
    	const button = document.getElementById(buttonID);
    	function getPref() {return Services.prefs.getCharPref(configPref)};
    	function setPref(val) {Services.prefs.setCharPref(configPref,val)};
    	
    	function setIsOnce(val) {
    		let win = Services.wm.getEnumerator('navigator:browser');
    		while (win.hasMoreElements()) {
    			win.getNext().document.getElementById(buttonID).IsOnce = val;
    		};
    	};
    	switch (event.button) {
    		case 0:
    			setPref('normal');
    			if (button.IsOnce) {
    				BrowserCommands.reloadSkipCache();
    				setIsOnce(false);
    			} else {
    				if (prefVal == 'normal')
    					BrowserCommands.reloadSkipCache()
    				else
    					BrowserCommands.reload();
    			};
    			break;
    		case 1:
    			setPref('once');
    			BrowserCommands.reloadSkipCache();
    			setIsOnce(true);
    			break;
    		case 2:
    			setPref('none');
    			event.preventDefault();
    			event.stopPropagation();
    			BrowserCommands.reload();
    			break;
    	};
    	let win = Services.wm.getEnumerator('navigator:browser');
    	while (win.hasMoreElements()) {
    		win.getNext().document.getElementById(buttonID).setAttribute(dataAttrib, getPref());
    	};
    });
    
    let stylesheet = document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"');
    document.insertBefore(stylesheet, document.documentElement);
    
    })();
    Alles anzeigen

    moko2000, such dir eine der Varianten aus, diese von mir oder die vom Mitleser ein paar Postings weiter oben.

    Zitat von Mira_Belle

    Und lassen sich so zum Bleistift einbinden.

    Das kann man sogar zusammenfügen: Zeile 1 und 2 vertauscht, Variablenname angepasst:

    JavaScript
    let ButtonIcon = "default_icon.svg"; // Name & Dateiendung des anzuzeigenden Symbols!
    let IconPath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons', ButtonIcon )); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner

    Und dann Zeile 6 entsprechend geändert:

    Code
    #browser-toolbox-button { list-style-image: url("${IconPath}") }

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