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

Beiträge von Zitronella

  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 9. Mai 2025 um 14:20

    ah danke, das hatte ich sogar gemacht gehabt, 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 und habs erst gar nicht getestet. Danke. Es funktioniert.

  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 9. Mai 2025 um 14:08
    Zitat von 2002Andreas
    Zitat von Zitronella

    evtl. auch hierfür eine Lösung?

    Teste doch bitte mal:

    JavaScript
    // ==UserScript==
    // @name           UndoListInTabmenuToo
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    UndoListInTabmenuToo.uc.js
    // @include        main
    // @compatibility  Firefox 135
    // @author         Alice0775
    // @version        2025/01/15 fix bug by Mira Bellenbaum (Tooltips deleted because incorrect)
    // @version        2025/01/05 remove redundant menuitems
    // @version        2025/01/05 fix bug
    // @version        2024/12/22 fix Bug 1936336 - Disallow inline event handlers
    // @version        2024/08/23 Bug 1690613 - Allow access to url/title/favIconUrl without "tabs" permission in session API
    // @version        2023/06/16 08:00 Bug 1819675 - Expand recently closed tabs to include all Windows
    // @version        2022/05/10 fix ref to context-media-eme-separator
    // @version        2021/12/09 remove JSON.parse (Bug 1733425)
    // @version        2021/04/25 fix 1689378
    // @version        2019/11/14 remove eval
    // @version        2019/06/30 10:00 Bug 1555060 Convert <tabs> to a custom element
    // @version        2019/06/24 23:00 wait for gBrowser initialized
    // @version        2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement
    // @version        2018/05/10 60
    // @version        2017/11/18 nsIPrefBranch to nsIPrefBranch
    // @version        2010/09/18 00:00 4.0b7pre
    // @version        2009/02/03 13:00 Tab-Verlauf im Tooltip anzeigen
    // @Note           Fügt die UndoClose-Tab-Liste zu Tabs und Kontextmenüs hinzu
    // @OriginalCode   Orginalcode aus browser.js für populateUndoSubmenu verwendet
    // @version        2018/05/09 15:00 61
    // ==/UserScript==
    // @version        2010/03/26 13:00  Minefield/3.7a4pre Bug 554991 -  allow tab context menu to be modified by normal XUL overlays
    // @version        2010/03/15 00:00  Minefield/3.7a4pre Bug 347930 -  Tab strip should be a toolbar instead
    // @version        2009/09/09 15:00 Mittelklick-Handhabung
    // @version        2009/09/03 22:00 Firefox3.7a1pre Funktion wurde wieder hergestellt.(Bug 489925. getElementById should not return anonymous nodes)
    // @version        2009/08/22 00:00 Firefox3.6 Ändern des stringbandle
    // @version        2009/04/24 00:00 #394759 [Firefox:Session Restore]-Add undo close window feature
    // @version        2008/10/12 18:00 Fx3.0.4pre Mittelklick-Popupmenü wurde nicht geschlossen und andere Korrekturen
    // @version        2007/10/05 10:00
           
    var UndoListInTabmenu = {
    // -- config --
      TABCONTEXTMENU : true ,  //Im Tabkontextmenü: anzeigen: true, nicht anzeigen: false
      CONTEXTMENU    : true ,  //Im Hauptkontextmenü: anzeigen: true , nicht anzeigen: false
    // -- config end--
      ss: null,
    
      get tabContext() {
        return document.getElementById("tabContextMenu");
      },
    
      get navigatorBundle() {
        return Services.strings.createBundle(
               "chrome://browser/locale/browser.properties"
               );
      },
    
      init: function(){
    	       if (location != 'chrome://browser/content/browser.xhtml') return;
        var css =`
          #tabContextUndoList :is(menu,menuitem),
          #ContextUndoList :is(menu,menuitem) {
            min-height: 20px !important;
            padding-top: 0 !important; 
            padding-bottom: 0 !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 (this.TABCONTEXTMENU){
          //Tabkontextmenü
          var tabContext = this.tabContext;
          this.makePopup(tabContext, null, "tabContextUndoList");
        }
      // if (this.CONTEXTMENU){
      //   //Hauptkontextmenü
      //   var contextMenu = document.getElementById("contentAreaContextMenu");
      //   var refItem = document.getElementById("context-media-eme-separator");
      //   this.makePopup(contextMenu, refItem, "ContextUndoList");
      // }
        // Geschlossene Tabs dem NS-Sitzungsspeicher entnehmen
        this._ss = SessionStore;
    
      },
    
      makePopup: function(popup, refItem, id){
    	      if (location.href !== "chrome://browser/content/browser.xhtml") return;
        var menu;
        //label
        const locale = "de";
        
        // "Liste Kürzlich geschlossener Fenster"
        menu = document.createXULElement("menu");
        menu.setAttribute("id", "historyUndoWindowMenu3");
        menu.setAttribute("label", "K\u00FCrzlich geschlossene Fenster");
        menu.setAttribute("accesskey", "F");
        menu.setAttribute("disabled", "false");
        popup.insertBefore(menu, refItem);
    
        menupopup = document.createXULElement("menupopup");
        menu.appendChild(menupopup);
        menupopup.setAttribute("id", "historyUndoWindowPopup3");
        //menu.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoWindowSubmenu(this);");
        menupopup.addEventListener("popupshowing", (event) => UndoListInTabmenu.populateUndoWindowSubmenu(event.currentTarget)); 
    
        //Liste kürzlich geschosener Tabs
        const LABELTEXT = "K\u00FCrzlich geschlossene Tabs";    //create menu
        menu = document.createXULElement("menu");
        menu.setAttribute("label", LABELTEXT);
        menu.setAttribute("accesskey", "K");
        if (id)
          menu.setAttribute("id", id);
        //menu.setAttribute("disabled", true);
        var menupopup = document.createXULElement("menupopup");
        menupopup.addEventListener("popupshowing", () => UndoListInTabmenu.populateUndoSubmenu(menupopup));
        //menupopup.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoSubmenu(this);");
        menu.appendChild(menupopup);
        popup.insertBefore(menu, refItem);
    
        //Eventlistener hinzufügen
        popup.addEventListener('popupshowing', () => {
        /*   UndoListInTabmenu.toggleRecentlyClosedWindows(document.getElementById("historyUndoWindowMenu3")); */
          // no restorable tabs, so make sure menu is disabled, and return
          if (UndoListInTabmenu._ss.getClosedTabCount(window) == 0) {
            menu.setAttribute("disabled", true);
            //menu.setAttribute("hidden", true);
            return;
          }
          menu.removeAttribute("disabled");
          //menu.setAttribute("hidden", false);
        },false);
      },
    
      /**
       * Befüllen, wenn das Chronik-Menü geöffnet ist (Fx3.6)
       */
      populateUndoSubmenu: function(undoPopup) {
    	      if (location.href !== "chrome://browser/content/browser.xhtml") return;
    		while (undoPopup.hasChildNodes()) {
    			undoPopup.removeChild(undoPopup.firstChild);
    		}
    		var utils = RecentlyClosedTabsAndWindowsMenuUtils;
    		var tabsFragment = utils.getTabsFragment(
    		  window,
          "menuitem",
          /* aPrefixRestoreAll = */ true,
          "menu-history-reopen-all-tabs"
        );
    		undoPopup.appendChild(tabsFragment);
    		  
    
      
        // "Append Clear undo close tb list"
        undoPopup.appendChild(document.createXULElement("menuseparator"));
    
        let m = undoPopup.appendChild(document.createXULElement("menuitem"));
        m.setAttribute("label", "Liste der geschlossenen Tabs löschen");
        m.setAttribute("accesskey", "C");
        m.addEventListener("command", () => {
          let prefs = Services.prefs;
          let max_undo = prefs.getIntPref("browser.sessionstore.max_tabs_undo");
          prefs.setIntPref("browser.sessionstore.max_tabs_undo", 0);
          prefs.setIntPref("browser.sessionstore.max_tabs_undo", max_undo);
        }, false);
      },
    
      
      
      
    
      /**
       * Populate when the history menu is opened
       */
      populateUndoWindowSubmenu: function PHM_populateUndoWindowSubmenu(undoPopup) {
    	      if (location.href !== "chrome://browser/content/browser.xhtml") return;
    		while (undoPopup.hasChildNodes()) {
    			undoPopup.removeChild(undoPopup.firstChild);
    		}
    		let utils = RecentlyClosedTabsAndWindowsMenuUtils;
    		let windowsFragment = utils.getWindowsFragment(
          window,
          "menuitem",
          /* aPrefixRestoreAll = */ true,
          "menu-history-reopen-all-windows"
        );
        undoPopup.appendChild(windowsFragment);
        undoPopup.firstChild.setAttribute("accesskey", "R");
    
        // "Append Clear undo close window list"
        undoPopup.appendChild(document.createXULElement("menuseparator"));
    
        m = undoPopup.appendChild(document.createXULElement("menuitem"));
        m.setAttribute("label", "Liste der geschlossenen Fenster l\u00F6schen");
        m.setAttribute("accesskey", "C");
        m.addEventListener("command", () => {
          for (let i = SessionStore.getClosedWindowCount() -1; i >= 0; i--)
            SessionStore.forgetClosedWindow(i);
        }, false);
      }
    };
    
    // Wir sollten die Weiterleitung nur starten, wenn das Browserfenster den Startprozess abgeschlossen hat
    // Ansonsten sollten wir warten, bis der Start abgeschlossen ist.
    
    if (gBrowserInit.delayedStartupFinished) {
      UndoListInTabmenu.init();
    } else {
      let delayedStartupFinished = (subject, topic) => {
        if (topic == "browser-delayed-startup-finished" &&
            subject == window) {
          Services.obs.removeObserver(delayedStartupFinished, topic);
          UndoListInTabmenu.init();
        }
      };
      Services.obs.addObserver(delayedStartupFinished,
                               "browser-delayed-startup-finished");
    }
    Alles anzeigen

    Wie schon gesagt, das Skript funktioniert, allerdings gefallen mir die Zeilenabstände nicht und dafür ist wohl Zeile 60-63 (inklusive der davor geöffneten { in Zeile 59) verantwortlich. Wenn ich den Teil lösche ist es so wie ich es haben möchte. Allerdings würde ich es statt löschen lieber auskommentieren, nur bin ich leider zu doof dazu das richtig hin zu bekommen. Kann mir das jemand sagen wie ich das korrekt mache?

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

    • Zitronella
    • 6. Mai 2025 um 23:23
    Zitat von grisu2099

    In bestehenden Profilen, egal ob Release oder Nightly, läuft es einwandfrei. :/

    Befindet sich die userChrome.js auch in entsprechenden Profilordner mit folgendem Inhalt?

    JavaScript
    // userChrome.js
    userChrome.ignoreCache = true;
    userChrome.import("*", "UChrm");
  • Webseite schreibt Eingaben neuer URLs um

    • Zitronella
    • 6. Mai 2025 um 11:24

    Danke. Mich wundert nur, dass andere Browser wie Edge und Opera (andere hab ich nicht getestet) dieses Verhalten nicht aufweisen. Aber das mag an meiner Unwissenheit, wie Firefox aufgebaut ist, liegen.

  • Webseite schreibt Eingaben neuer URLs um

    • Zitronella
    • 6. Mai 2025 um 10:46

    Sehr schade, dass dies nach über 5 Jahren immer noch nicht in Firefox gefixt wurde. Beispiel https://mozhelp.ddnss.de/dateien/wl/

  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 6. Mai 2025 um 10:29
    Zitat von Speravir

    Bei dir stand etwas von Weiterleitungen.

    ja, weil es teils auch Weiterleitungen blockiert auf andere Seiten siehe Beispiel 2 und 3 in diesem Post.

  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 5. Mai 2025 um 22:49
    Zitat von Speravir

    Das Skript für accessibility.blockautorefresh könnte nach diesem Vorbild angepasst werden.

    ja, so machte ich das.

  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 5. Mai 2025 um 12:03

    Mira_Belle Dankeschön, ich habe allerdings schon ein Skript für Deepl, welches ich gestern nach euren Posts entsprechend angepasst habe ;)

  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 5. Mai 2025 um 00:01

    Vielen Dank Horstmann und Mira_Belle ein Skript hatte ich sogar wieder gelöscht, da ich zwischenzeitlich eine Lösung hier im Forum fand. Aber da hat Horstmann wohl zeitgleich gepostet gehabt. Auf jeden Fall konnte ich jetzt auch meine anderen Skripte anpassen, da ja quasi nur eine Zeile auskommentiert und durch eine andere ersetzt werden musste.

    Zitat von Mira_Belle

    Warum werden, bzw. sind in den Skripten keine Header vorhanden?

    kann ich dir gar nicht genau sagen. Wahrscheinlich weil sie so nach und nach entstanden sind und ich teils irgendwann andere about:config Einträge dazu genommen habe für eigene Skripte.

  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 4. Mai 2025 um 22:52

    okay, ich hoffe jemand findet noch ne Lösung. Derweil schreibe ich hier mal noch welche rein, die nicht mehr funktionieren:

    JavaScript
    (function() {
    
       if (location != 'chrome://browser/content/browser.xhtml')
          return;
    
       try {
          CustomizableUI.createWidget({
             id: 'accessibility-blockautorefresh-button',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {
                var button = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                var attributes = {
                   id: 'accessibility-blockautorefresh-button',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'accessibility.blockautorefresh',               
                   tooltiptext: Services.prefs.getBoolPref('accessibility.blockautorefresh') ?
                      'Weiterleitung ist deaktiviert' : 'Weiterleitung ist aktiviert',
                   oncommand: '(' + onCommand.toString() + ')()'
                };
                for (var a in attributes) {
                   button.setAttribute(a, attributes[a]);
                };
                function onCommand() {
                   var isEnabled = !Services.prefs.getBoolPref('accessibility.blockautorefresh');
                   Services.prefs.setBoolPref('accessibility.blockautorefresh', isEnabled);
                   var windows = Services.wm.getEnumerator('navigator:browser');
                   while (windows.hasMoreElements()) {
                      let button = windows.getNext().document.getElementById('accessibility-blockautorefresh-button');
                      if (isEnabled)
                         button.setAttribute('tooltiptext', 'Weiterleitung ist deaktiviert')
                      else
                         button.setAttribute('tooltiptext', 'Weiterleitung ist aktiviert');
                   };
                };
                return button;
             }
          });
       } catch(e) { };
    
       var css =
          '#accessibility-blockautorefresh-button[tooltiptext="Weiterleitung ist aktiviert"] {list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACdklEQVR4nJVSW0iUQRj9Zvd3V3d/3VbR8LJJkraCmZobqQViEF0t3DakBzMTKXvqQQgMpB56jC5kN6nMyjJ0wS4YFCUhKBvUGhQmGhopXiqytZ3559ZD/bK6RnVeZuYbzvnmO2cA/oA1+bnGP92FwrBY8dTFo1WbS9fX/osACj2szslCh+rKjuUUOY73+0YffJ76/kRKAZRxPvnp22B/34fuF909ZFGBwg1rlYN1O86vWBVfwwQFJigwySB0/2VydrjXO17VdPZOd9gI2XkrCxwZtgrCMRCO5cI1SH+AMYYuz92t3t+7352r8+aMetnXP2pVEl6lONVt0siiqNCkxogkHEvCMMIcI8wwokDMyMSXBT5GtE5MTEgldJ7G082PAoE9mzbuS/X6n07dfNs7fplxDtboyKg8T8wlSworpFxDpiRaZLfbbQDwdZ4AAMCNpjYfwWXFqs3s7Op6PKzX1SXuGpNNrhMSISkULoQgcyZW15ZnFRRnVnEpQEgGPV3DZ1qut47o5JNXDje8fjZ2re22d3RhQwUAgGCqZrqWHtHdlgrLsCdVXCAEc2REEOtQtpYcSK6MiHSX3rra/iYsxvz8vIj6c553apySxiRDTFDJBEVMUEm5hjSuSY1rKDCDp/0ds57mxvbn81IYGxsXcTHJA6nZ0R4OmqIJDWmcAGYYEYYBsyDCDAM1EIslkW2JDqa1vB8YnJ0Xo6/XP6Qak/ossYYco5Um/I7tV4QMS8yCaGZamxzqVCo77nb6w36iDpfLZUpMiU+32syJEqQBIQSOEnZCIB4/8tBcfq/V61vI+SuqG7bX73LvTP9vog5npjPspTp+Ah8eSZ/sO5KDAAAAAElFTkSuQmCC)} ' +
          '#accessibility-blockautorefresh-button[tooltiptext="Weiterleitung ist deaktiviert"] {list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACd0lEQVR4nJVSW0hUURTd585LTRMdk1F0akJtKiMfjVl9mBGhI1nUGFEQ4oeIPz0++qhA7NeP6CPKogIVplDR3iMUjWSB+BE9IMQHKtHMWD5SvHfuvWef3Y8j6ijV+jnn7MNa+5y1NsA6KMrLNax3txzSWsWWC8dqTu7Nqf8XAbb8ULAzhzW4ndcO27TGviA8D8n0GgQCFwLH5mHo3fhC79v3/eqaAiV7dhkbj9hvFSWptcR1ANQAUIfInlCHQNg0em/SXtPk7emN+oIrO33f7nj5HGkKgCYTaQqQphDoMpCuEuoIVqY66q1jz2o97vwIb8moD19HJig992Phht8VZhGOJV0lwTVCFMQRGBcS40JijMBikcA+SCneUChEKzwAAKirKnddzhzv6pyytb0JGu8iImyMNcfW24LNWcaF/SgYm0XT3KXhlC1+v3/GuFrgTvurAeWE+2CyBZy+npejkbr11NFaq0ErJmJMAKAQsrpk4nnPodyyrIQaEhxAIHR8j7n54FH3eITcXneg4Wko4WFrl29idUMjAECYU3yJVb5IqAFwHSyo5DjOlt7WVAUNkgTbTLPuKxnT1XGessrmDt+XqBhdBXkmb0XitzSTshW4zgg1AtQZISdEYigYoWBsmpt/NU9trrrx2OdfkcKPQFDE2XcMFsfPVBkwbCSuMcERODKmCwkWEwCJKM5hlMt/phW2Dg4NL6yIse/z8Iiekd9vMyh5iaClcpQYR4k4SkxfXAN6zOT9OUe1t/vFp6hJXBool8tsT03KTo6R0ghAYoyBJyF0nRFsapnPPN3W+WRgNeevaDpTetVzvDL7v4kRbHc6o14awR8IFzD9TbnyZAAAAABJRU5ErkJggg==)} ';
       var stylesheet = document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"');
       document.insertBefore(stylesheet, document.documentElement);
    
    })();
    Alles anzeigen
  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 4. Mai 2025 um 22:12

    Cool vielen Dank. Funktioniert beides. Bist ja mal wieder rasend schnell.

    Ich möchte kein neuen Post aufmachen, daher schreibe ich hier weiter, weil mir gerade auffiel dass noch andere Skripte nicht mehr funktionieren. Vielleicht gibts dafür auch ne Lösung?

    JavaScript
    (function() {
    
       if (location != 'chrome://browser/content/browser.xhtml')
          return;
    
       try {
          CustomizableUI.createWidget({
             id: 'quick-media-codec-button',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {
                var button = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                var attributes = {
                   id: 'quick-media-codec-button',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'Quick Media Codec',             
                   tooltiptext: Services.prefs.getBoolPref('media.play-stand-alone') ?
                      'Quick Media Codec is playing' : 'Quick Media Codec is stopped',
                   oncommand: '(' + onCommand.toString() + ')()'
                };
                for (var a in attributes) {
                   button.setAttribute(a, attributes[a]);
                };
                function onCommand() {
                   var isEnabled = !Services.prefs.getBoolPref('media.play-stand-alone');
                   Services.prefs.setBoolPref('media.play-stand-alone', isEnabled);
                   var windows = Services.wm.getEnumerator('navigator:browser');
                   while (windows.hasMoreElements()) {
                      let button = windows.getNext().document.getElementById('quick-media-codec-button');
                      if (isEnabled)
                         button.setAttribute('tooltiptext', 'Quick Media Codec is playing')
                      else
                         button.setAttribute('tooltiptext', 'Quick Media Codec is stopped');
                   };
                };
                return button;
             }
          });
       } catch(e) { };
    
       var css =
          '#quick-media-codec-button[tooltiptext="Quick Media Codec is playing"] {list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QgVCgMdA8c0JwAAAw1JREFUOMttk71LK3kYhZ/JTExGQswXuopfZC1uo+til8JGqxXELfJRWWhpsRYG8SqKippL/gUjbhUTuwXBJojmD/ALtsoqEi0yIZqQhFEmv5kt7kbYZU99nsOB874S/2hra4vt7W329vaClmWtWpY1aVlWEECSpAdJkq4kSfq2vr7+0PYCSABfv35lf3+fzc3NlBBioVKpEAgE8Hg8ANRqNcrlMn6/H1mWj3Z2dhbbjBSPx0kmk6ytrd1Uq9Wf+vv7mZ2dxe/3oygKlmVhGAaVSoWzszOKxSIej+f24OBgPB6Pf28Qj8dT1Wp1IRQKMTMzg9PpRFVVTNMEQAjBx8cH9Xqdi4sL8vk8Xq/3KJlMLkrLy8tBIcRfgUCApaUlOjs7UVWVdDpNNBrFZrNhWRZCCHRdp1arcXx8jKZpyLL8o63Vaq1qmkY4HMbpdNLR0QHA3d0dKysr3N7eIkkSiqKgqioul4u5uTk0TaPVaq3aDMOY7O3txePxYLfbsdlsALy9vVEqldjY2CCRSGCaJrIs43A48Hq99PX1YRjGpM0wjKDP58M0TSzLQpKkz4DX11eazSb5fJ75+Xmur6+x2+3Isozf78cwjKAihMCyLP6ry8tL6vU6qqoyNDSEqqqf4W0JIVBM03zQNO2LEIJ2mCRJeDwe3G43QgimpqZIJBLYbDbe398xTZNSqYRpmg+KaZpXj4+PX6rVKi6Xi46ODhRFobu7G7vdzu7uLqFQ6F9z1mo1CoUCPp/vSh4bG/tTUZTfXl5eGB8fR1EUHA4HxWKRw8NDBgcHP2Fd12k2m6RSKRqNBrIsR+T7+/u30dHRwaenp5/tdjsDAwMIIZienkYIgWmaGIaBrus0Gg3Oz8/J5XKoqnqUTqd/l2OxGCcnJ39MTEz8enNz88Pz8zPDw8OfdXVdR9d1yuUyqVSKXC5HV1fXbSaT+SUWi30/5Wg0SiaTIRKJpIQQC7VajZGREXp6egAolUoUCgXcbjeKohxls9nFNvO5SyQSIZvNEg6Hg8D/vjPw7fT09KHtBfgbw8eNC0eG6lMAAAAASUVORK5CYII=)} ' +
          '#quick-media-codec-button[tooltiptext="Quick Media Codec is stopped"] {list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QgVCgI2tmD8JgAAAutJREFUOMttk71LK2kYxX+TmXxMMHFCIm78WCHX4jayu9hZ+AesIG5hDNhppTY2QVRQlKhcUltG3EoTuwXBJgj6D3hJaa4iKpKE6AwTjXF8593iXlN56nN4DuecR+EX1tfX2djYYGtrKyGlXJJSjkopEwCKolwpinKmKMq31dXVqw8ugAKwsrLC9vY2a2trOSHETL1eJxaLYRgGAJZlUavViEajqKq6t7m5OfuhUdLpNNlsluXl5QvTNP/o6+tjfHycaDSKpmlIKXEch3q9zvHxMbe3txiG8X1nZ+fPdDr900E6nc6ZpjkzMjLC2NgYuq6jaRoejwcAIQStVgvbtjk9PeX8/JxIJLKXzWZnlcXFxYQQ4kcsFmNhYQFd1wkGg3wG27axLIv9/X2q1Sqqqn7R3t/fl2q1GnNzcwQCAYLBIJlMhkajgWmaNJtNpJS0Wi3y+TxCCCYmJshkMnR1dS1pjuOMxuNxDMPA6/UC4Lour6+v2LZNo9Fo5wDg9/uJRCL09PTw8vIyqjmOk+jt7cV1XaSUANzf3/P29sbT0xOWZaGqKkIIAFRVRVVVotEolmUlNCFEW/iBUqnE4+MjDw8PSCmJx+N0dHTwaxNtnhACzXXdq2q1+lUI0b4SCoWQUuLxeJBSEg6H8fv9bZHrulQqFVzXvfK4rnt2fX2NaZq8vr4C4PP5CAQChEIhwuEwuq7j8/kAaLVaWJZFuVzGdd0zZXp6OuE4zo9EIsH8/DyGYRAKhT6tsdFoYNs2u7u7XF5e4vV6v6ilUulpaGjo95ubm7+8Xi/9/f3tQKWUuK6L4zg8Pz/TaDQ4OTmhWCyi6/rewcHBv2oqleLw8PC/4eHhfy4uLn67u7tjYGCgbbfZbNJsNqnVauRyOYrFIp2dnd/z+fzfqVTq55SnpqbI5/Mkk8mcEGLGsiwGBwfp7u4GoFKpUC6XCYfDaJq2VygUZj807U6SySSFQoHJyckE8Ok7A9+Ojo6uPrgA/wO0dY4EG2coXQAAAABJRU5ErkJggg==)} ';
       var stylesheet = document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"');
       document.insertBefore(stylesheet, document.documentElement);
    
    })();
    Alles anzeigen

    und noch eines gefunden was nicht mehr funktioniert bei mir:(

    JavaScript
    // ContextTranslate.uc.js
    
    (function () {
    	if (location != 'chrome://browser/content/browser.xhtml')
    		return;
    	let translate = function () {
    		let browserMM = gBrowser.selectedBrowser.messageManager;
    		browserMM.addMessageListener('getSelection', function listener(message) {
    			let t = (message.data !== '');
    			let e = (document.charset || document.characterSet);
    			if (t) {
    					openWebLinkIn('https://translate.google.com/?sl=auto&tl=de&text=' + encodeURIComponent(message.data), 'tab');
    			} else {
    				openWebLinkIn('https://translate.google.com/translate?u=' + encodeURIComponent(gBrowser.currentURI.spec) + '&hl=de-DE&ie=' + e + '&sl=auto&tl=de-DE', 'tab');
    			};
    			browserMM.removeMessageListener('getSelection', listener, true);
    		});
    		browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true);
    	}
    	let menuitem = document.createXULElement('menuitem');
    	menuitem.id = 'context-googletranslate';
    	menuitem.setAttribute('label', 'gTranslate->de');
    	menuitem.setAttribute('tooltiptext', 'Mit GoogleTranslate übersetzen');
    	menuitem.setAttribute('oncommand', '(' + translate.toString() + ')()');
    	menuitem.classList.add('menuitem-iconic');
    	//Wer kein Icon möchte kann die nächsten beiden Zeilen auskommentieren/löschen
    	//menuitem.style.listStyleImage = 'url("https://translate.google.com/favicon.ico")';
    	menuitem.style.listStyleImage = ' url("data:image/png;base64,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")';
    	let refItem = document.getElementById('context-inspect');
    	refItem.parentNode.insertBefore(menuitem, refItem);
    })();
    Alles anzeigen
  • Einige Skripte funktionieren seit ff 138 nicht mehr

    • Zitronella
    • 4. Mai 2025 um 21:57

    Folgendes Skript funktioniert nicht mehr (glaube ab ff138) kann es mir jemand fixen?

    JavaScript
    // ==UserScript==
    // @name           UndoListInTabmenuToo
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    UndoListInTabmenuToo.uc.js
    // @include        main
    // @compatibility  Firefox 87+
    // @author         Alice0775
    // @version        2021/04/25 fix 1689378
    // @version        2019/11/14 remove eval
    // @version        2019/06/30 10:00 Bug 1555060 Convert <tabs> to a custom element
    // @version        2019/06/24 23:00 wait for gBrowser initialized
    // @version        2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement
    // @version        2018/05/10 60
    // @version        2017/11/18 nsIPrefBranch to nsIPrefBranch
    // @version        2010/09/18 00:00 4.0b7pre
    // @version        2009/02/03 13:00 ツールチップにタブ内履歴を表示するようにした
    // @Note           タブやコンテキストメニューにもUndoClose Tab Listを追加するもの
    // @OriginalCode   browser.jsからpopulateUndoSubmenuを拝借し, ごにょごにょした
    // @version        2018/05/09 15:00 61
    // ==/UserScript==
    // @version        2010/03/26 13:00  Minefield/3.7a4pre Bug 554991 -  allow tab context menu to be modified by normal XUL overlays
    // @version        2010/03/15 00:00  Minefield/3.7a4pre Bug 347930 -  Tab strip should be a toolbar instead
    // @version        2009/09/09 15:00 中クリック処理
    // @version        2009/09/03 22:00 Firegox3.7a1preで動かなくなっていたのを修正(Bug 489925. getElementById should not return anonymous nodes)
    // @version        2009/08/22 00:00 Firegox3.6 stringbandleの変更による
    // @version        2009/04/24 00:00 #394759 [Firefox:Session Restore]-Add undo close window feature
    // @version        2008/10/12 18:00 Fx3.0.4pre中クリックしたときメニューポップアップが閉じないおよびその他fix
    // @version        2007/10/05 10:00
    
    var UndoListInTabmenu = {
    // -- config --
      TABCONTEXTMENU : true ,  //タブコンテキストメニューに              追加する:[true], しない: false
      CONTEXTMENU    : false ,  //コンテンツアリアコンテキストメニューに  追加する: true , しない:[false]
    // -- config end--
      ss: null,
    
      get tabContext() {
        return document.getElementById("tabContextMenu");
      },
    
      get navigatorBundle() {
        return Services.strings.createBundle(
               "chrome://browser/locale/browser.properties"
               );
      },
    
      init: function(){
    
        if (this.TABCONTEXTMENU){
          //タブコンテキスト
          var tabContext = this.tabContext;
          this.makePopup(tabContext, null, "tabContextUndoList");
        }
        if (this.CONTEXTMENU){
          //コンテンツエリアコンテキスト
          var contextMenu = document.getElementById("contentAreaContextMenu");
          var refItem = document.getElementById("context-sep-stop");
          this.makePopup(contextMenu, refItem, "ContextUndoList");
        }
        // get closed-tabs from nsSessionStore
        this._ss = SessionStore;
    
      },
    
      makePopup: function(popup, refItem, id){
        var menu;
        //label
        const locale = "en";
    
        // "Recently Closed Windows"
        menu = document.createXULElement("menu");
        menu.setAttribute("id", "historyUndoWindowMenu3");
        menu.setAttribute("label", "K\u00FCrzlich geschlossene Fenster");
        menu.setAttribute("accesskey", "W");
        menu.setAttribute("disabled", "true");
        popup.insertBefore(menu, refItem);
    
        this.historyUndoWindowPopup3 = menu = menu.appendChild(document.createXULElement("menupopup"));
        menu.setAttribute("id", "historyUndoWindowPopup3");
        menu.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoWindowSubmenu(this);");
    
        //UndoClose Tab List  最近閉じたタブ
        const LABELTEXT = locale.indexOf("ja") == -1?"K\u00FCrzlich geschlossene Tabs":"\u6700\u8fd1\u9589\u3058\u305f\u30bf\u30d6";    //create menu
        menu = document.createXULElement("menu");
        menu.setAttribute("label", LABELTEXT);
        menu.setAttribute("accesskey", "L");
        if (id)
          menu.setAttribute("id", id);
        //menu.setAttribute("disabled", true);
        var menupopup = document.createXULElement("menupopup");
        menupopup.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoSubmenu(this);");
        menu.appendChild(menupopup);
        popup.insertBefore(menu, refItem);
    
        //add event listener
        popup.addEventListener('popupshowing',function(event) {
          UndoListInTabmenu.toggleRecentlyClosedWindows();
          // no restorable tabs, so make sure menu is disabled, and return
          if (UndoListInTabmenu._ss.getClosedTabCount(window) == 0) {
            menu.setAttribute("disabled", true);
            //menu.setAttribute("hidden", true);
            return;
          }
          menu.removeAttribute("disabled");
          //menu.setAttribute("hidden", false);
        },false);
      },
    
      /**
       * Populate when the history menu is opened (Fx3.6)
       */
      populateUndoSubmenu: function(undoPopup) {
            while (undoPopup.hasChildNodes()) {
                undoPopup.removeChild(undoPopup.firstChild);
            }
            var utils = RecentlyClosedTabsAndWindowsMenuUtils;
            var tabsFragment = utils.getTabsFragment(
              window,
          "menuitem",
          /* aPrefixRestoreAll = */ true,
          "menu-history-reopen-all-tabs"
        );
            undoPopup.appendChild(tabsFragment);
            undoPopup.firstChild.setAttribute("accesskey", "R");
        undoPopup.insertBefore(document.createXULElement("menuseparator"), undoPopup.childNodes[1]);
    
        // populate tab historis for tooltip
        var undoItems = JSON.parse(UndoListInTabmenu._ss.getClosedTabData(window));
        for (var i = 0; i < undoItems.length; i++) {
          var entries = undoItems[i].state.entries;
          var tooltiptext = "";
          for (var j = entries.length - 1; j > -1; j--){
            if (j != entries.length - 1)
              tooltiptext += "\n";
            tooltiptext += parseInt(j + 1, 10) + ". " + entries[j].title;
          }
          undoPopup.childNodes[i + 2/*restore all, sep*/].setAttribute("tooltiptext", tooltiptext);
        }
    
        // "Append Clear undo close tb list"
        undoPopup.appendChild(document.createXULElement("menuseparator"));
    
        m = undoPopup.appendChild(document.createXULElement("menuitem"));
        m.setAttribute("label", "Liste der letzten Tabs l\u00F6schen");
        m.setAttribute("accesskey", "C");
        m.addEventListener("command", function() {
          let prefs = Services.prefs;
          let max_undo = prefs.getIntPref("browser.sessionstore.max_tabs_undo");
          prefs.setIntPref("browser.sessionstore.max_tabs_undo", 0);
          prefs.setIntPref("browser.sessionstore.max_tabs_undo", max_undo);
        }, false);
      },
    
      toggleRecentlyClosedWindows: function PHM_toggleRecentlyClosedWindows() {
        // enable/disable the Recently Closed Windows sub menu
        let undoPopup = this.historyUndoWindowPopup3;
        // no restorable windows, so disable menu
        if (this._ss.getClosedWindowCount() == 0)
          this.historyUndoWindowPopup3.parentNode.setAttribute("disabled", true);
        else
          this.historyUndoWindowPopup3.parentNode.removeAttribute("disabled");
      },
    
      /**
       * Populate when the history menu is opened
       */
      populateUndoWindowSubmenu: function PHM_populateUndoWindowSubmenu(undoPopup) {
            while (undoPopup.hasChildNodes()) {
                undoPopup.removeChild(undoPopup.firstChild);
            }
            let utils = RecentlyClosedTabsAndWindowsMenuUtils;
            let windowsFragment = utils.getWindowsFragment(
          window,
          "menuitem",
          /* aPrefixRestoreAll = */ true,
          "menu-history-reopen-all-windows"
        );
        undoPopup.appendChild(windowsFragment);
        undoPopup.firstChild.setAttribute("accesskey", "R");
        undoPopup.insertBefore(document.createXULElement("menuseparator"), undoPopup.childNodes[1]);
    
        // "Append Clear undo close window list"
        undoPopup.appendChild(document.createXULElement("menuseparator"));
    
        m = undoPopup.appendChild(document.createXULElement("menuitem"));
        m.setAttribute("label", "Liste der kürzlich geschlossenen Fenster l\u00F6schen");
        m.setAttribute("accesskey", "C");
        m.addEventListener("command", function() {
          for (let i = SessionStore.getClosedWindowCount() -1; i >= 0; i--)
            SessionStore.forgetClosedWindow(i);
        }, false);
      }
    };
    
    // We should only start the redirection if the browser window has finished
    // starting up. Otherwise, we should wait until the startup is done.
    if (gBrowserInit.delayedStartupFinished) {
      UndoListInTabmenu.init();
    } else {
      let delayedStartupFinished = (subject, topic) => {
        if (topic == "browser-delayed-startup-finished" &&
            subject == window) {
          Services.obs.removeObserver(delayedStartupFinished, topic);
          UndoListInTabmenu.init();
        }
      };
      Services.obs.addObserver(delayedStartupFinished,
                               "browser-delayed-startup-finished");
    }
    Alles anzeigen

    und auch dieses Script für das Schließen der linken Tabs scheint nicht mehr zu gehen :|

    JavaScript
    (function() {
    
      if (location != 'chrome://browser/content/browser.xhtml')
        return;
    
      let menuitem = document.createXULElement('menuitem');
      menuitem.id = 'context_closeLeftTabs';
      menuitem.setAttribute('label', 'Linke Tabs schließen');
      menuitem.setAttribute('oncommand',
        'for (let i = TabContextMenu.contextTab._tPos - 1; i >= 0; i--) \
           gBrowser.removeTab(gBrowser.tabs[i], {animate: true})');
    
      let tabContextMenu = document.getElementById('tabContextMenu');
      let refItem = document.getElementById('context_undoCloseTab');
      tabContextMenu.insertBefore(menuitem, refItem);
      tabContextMenu.insertBefore(document.getElementById('context_closeTabsToTheEnd'), refItem);
      tabContextMenu.insertBefore(document.getElementById('context_closeOtherTabs'), refItem);
      //tabContextMenu.removeChild(document.getElementById('context_closeTabOptions'));
    
    })();
    Alles anzeigen

    evtl. auch hierfür eine Lösung?

  • cookiebanners.service.mode auf 2 funktioniert seit heute nicht mehr auf Youtube

    • Zitronella
    • 19. April 2025 um 11:43

    oh sorry, zu schnell und überlesen. Ja ich habe mal in about:config bei Android cookiebanners.service.mode und
    cookiebanners.service.mode.privateBrowsing jeweils auf 2 gesetzt. Mal sehen wie lange es hält.

  • cookiebanners.service.mode auf 2 funktioniert seit heute nicht mehr auf Youtube

    • Zitronella
    • 19. April 2025 um 11:27

    okay, aber aus der Android Beta wurde die Funktion wohl komplett entfernt.

    Zumindest gibt es diese Einstellung (unterstes Bild) https://support.mozilla.org/de/kb/blockier…firefox-android nicht mehr.

  • cookiebanners.service.mode auf 2 funktioniert seit heute nicht mehr auf Youtube

    • Zitronella
    • 19. April 2025 um 10:51

    Ich muss hier mal wieder etwas schreiben. Also alles funktioniert noch mit dem o.g. Skript in about:config. Allerdings ist auf Github das Projekt archiviert und nur noch Lesemodus (https://github.com/mozilla/cookie-banner-rules-list/releases). Ist es somit tot?

    Auch habe ich bei Android mir extra Firefox Beta geholt, da es dort eine Einstellung gab in einem Privaten Tab, dass Cookiebanner greift bei google. Auch diese Funktion ist wohl nicht mehr vorhanden. =O

  • Tab mit Audioinhalt: Ist diese Darstellung normal oder ein nicht mehr richtig funktionierendes Script?

    • Zitronella
    • 19. April 2025 um 09:28
    Zitat von Speravir

    Wie gesagt, vielleicht hilft es ja anderen.

    Genau so hatte ich es auch verstanden. Wollte mich aber trotzdem bedanken :)
    -----------------------------------------------------------------------------------------------

    Gestern hatte ich mal wieder viele Tabs offen u.a. einen Discord Tab, bei dem immer mal wieder Sound war, wenn jemand etwas schrieb und da sah ich, wie meine Tabs in der Leiste wieder hin und her sprangen. Das hat mich echt kirre gemacht.

    Zum Glück fand ich auf Reddit die Lösung:

    Statt dem Code

    CSS
    /* verhindern, dass Audio-Tabs die Tab-Breite ändern (wenn im Player der Ton aktiviert/deaktiviert wird und viele Tabs offen sind) */
    .tabbrowser-tab {
        &:is([muted], [soundplaying], [activemedia-blocked]) {
            #tabbrowser-tabs[orient="horizontal"] &:not([pinned]) {
                --tab-min-width: unset !important;
            }
        }
    }

    die eine Zeile 5 folgendermaßen verändern. Sieht dann so aus:

    CSS
    /* verhindern, dass Audio-Tabs die Tab-Breite ändern (wenn im Player der Ton aktiviert/deaktiviert wird und viele Tabs offen sind) */
    .tabbrowser-tab {
        &:is([muted], [soundplaying], [activemedia-blocked]) {
            #tabbrowser-tabs[orient="horizontal"] &:not([pinned]) {
    			min-width: max(var(--tab-min-width-pref, var(--tab-min-width))) !important;
            }
        }
    }

    Und danach ist Ruhe mit dem rum gespringe der Tabs. Vielleicht hilft es ja jemandem.

  • Tab mit Audioinhalt: Ist diese Darstellung normal oder ein nicht mehr richtig funktionierendes Script?

    • Zitronella
    • 12. März 2025 um 09:47
    Zitat von Speravir

    Wenn Du sowieso Userskripte nutzt, dann wohl keinen

    Dann behalte ich die userChromeShadow.css, da ich eh Userscripte nutze.

    Vielen Dank Speravir für deine ganze Mühe.

  • Tab mit Audioinhalt: Ist diese Darstellung normal oder ein nicht mehr richtig funktionierendes Script?

    • Zitronella
    • 11. März 2025 um 09:27
    Zitat von Speravir

    Wenn es für dich funktioniert, ist es gut

    Ja, es funktioniert für mich sehr gut

    Zitat von Speravir

    hinweisen, dass Du alles auch in die userChrome.css schreiben könntest

    okay, aber lediglich meinen Code aus der userChromeShadow.css in die userChrome.css zu schreiben funktioniert wohl nicht. Bedeutet ich müsste wieder einiges umschreiben und damit kenne ich mich wieder zu wenig aus. Würde ich aber machen (mit Hilfe des Forums) wenn es Vorteile bringen würde. Gibt es denn Vorteile, außer dass man 2 Dateien weniger hat?

    Zitat von Speravir

    Auch überschreibst du zum Teil den sowieso vorgegebenen Standard mit demselben Wert

    kannst du mir konkret an meinem Code sagen was ich weglassen könnte?

  • Tab mit Audioinhalt: Ist diese Darstellung normal oder ein nicht mehr richtig funktionierendes Script?

    • Zitronella
    • 8. März 2025 um 11:10

    Dank der großartigen Hilfe und den Hinweisen hier habe ich es jetzt perfekt für mich in der userChromeShadow.css. Alles was ich früher bezüglich Audio-Tabs in der userChrome.css hatte ist nun gelöscht. Habe noch einiges kommentiert im Code, damit ich später durchblicke.

    CSS
    /*///////////////   Sound/Lautsprecher Symbol in Tabs ändern   ///////////////*/
    
    /* verhindern, dass Audio-Tabs die Tab-Breite ändern (wenn im Player der Ton aktiviert/deaktiviert wird und viele Tabs offen sind) */
    .tabbrowser-tab {
        &:is([muted], [soundplaying], [activemedia-blocked]) {
            #tabbrowser-tabs[orient="horizontal"] &:not([pinned]) {
                --tab-min-width: unset !important;
            }
        }
    }
    /* Verstecke das Favicon beim Abspielen (wie bei FF 135) außer bei geblockten Medien in ungelesenen Tabs[activemedia-blocked] */
    #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) .tabbrowser-tab:not([pinned]):not([crashed]):is([soundplaying], [muted]/* , [activemedia-blocked] */) {
        .tab-content .tab-icon-image {
            display: none;
        }
    /* Lautsprechersymbol Position und Größe */
        .tab-audio-button {
            --button-size-icon-small: 18px !important;
            --button-min-height-small: 16px !important;
            margin: auto 4.5px auto -1px !important;
            transform: translateY(-2px);
        }
    }
    /* Lautsprechersymbol größer und ohne Hintergrundfarbe */
    .tab-audio-button {
      border: none !important;
      background-color: transparent !important;
      scale: 1.3 !important;
     }
      /* Lautsprechersymbol Farbe bei Sound  */
    .tab-audio-button {
        &[soundplaying]::part(button) {
        fill: green !important;
     }
    }
      /* Lautsprechersymbol Farbe bei Stumm  */
    .tab-audio-button {
        &[muted]::part(button) {
        fill: red !important;
     }
    }
    /* Lautsprechersymbol Hintergrundfarbe bei Sound wenn darüber gehovert wird */
    .tab-audio-button:hover {
        &[soundplaying]::part(button) {
    	background-color: transparent !important;
     }
    }
    /* Lautsprechersymbol Hintergrundfarbe bei Stumm wenn darüber gehovert wird */
    .tab-audio-button:hover {
        &[muted]::part(button) {
    	background-color: transparent !important;
     }
    }
    /* Lautsprechersymbol in ungelesenen Tabs, Farbe und Hintergrundfarbe */
    .tab-audio-button {
      #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) &:not([pinned]):not([crashed]) {
        &[activemedia-blocked]::part(button) {
          background-image: url("chrome://browser/skin/tabbrowser/tab-audio-blocked-circle-12.svg");
          fill: orange !important;
          background-color: transparent !important;
        }
      }
    }
    Alles anzeigen

    statt fill: green und fill: red habe ich in meinem Standardprofil beides mal white genommen, da meine Tabs durch die Änderungen in der userChrome.css eingefärbt sind. Habe es hier der Übersichtlichkeit halber aber mit Farbe gepostet.

  • Tab mit Audioinhalt: Ist diese Darstellung normal oder ein nicht mehr richtig funktionierendes Script?

    • Zitronella
    • 6. März 2025 um 19:29

    .DeJaVu Danke, jetzt hab ich es verstanden. Hatte gestern dann auch mit den BrowserWerkzeugen gesucht und wurde sogar fündig. Weiß aber nicht, ob ich es dann noch geschafft hätte den korrekten css Code zu erstellen. Zeitgleich wurde er dann hier ins Forum gepostet und dann habe ich es mir zugegebenermaßen leicht gemacht und diesen genommen.

Unterstütze uns!

Jährlich (2025)

94,2 %

94,2% (612,48 von 650 EUR)

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