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

Beiträge von Boersenfeger

  • 2 Einträge in Kontextmenüs entfernen

    • Boersenfeger
    • 25. Februar 2026 um 18:34
    Zitat von Boersenfeger

    Thema ist damit erledigt, vielen Dank an alle Beteiligten. :thumbup::D

  • Firefox vs. YouTube

    • Boersenfeger
    • 25. Februar 2026 um 18:33

    YouTube und AdBlocker sind ein dauerndes Thema. Dort will Youtube immer restriktiver vorgehen, so das es wohl immer wieder zu Kalamitäten kommt.

    YouTube geht wieder gegen Adblocker vor
    In den USA häuften sich die Ausfallmeldungen für die Seite. Dabei war das Problem ein ganz anderes.
    www.heise.de

    Es gibt auch neuere Artikel auf Reddit dazu, dort bin ich aber nicht unterwegs

  • about:addons mit einigen Fehlern in 150.0 Nightly

    • Boersenfeger
    • 25. Februar 2026 um 18:21

    Alles tutti, hatte die Auskommentierung nicht korrekt gesetzt!


    FuchsFan ... dann muss ich wohl Endor mal dazu bitten, wenn er Zeit hat. ;)

  • 2 Einträge in Kontextmenüs entfernen

    • Boersenfeger
    • 25. Februar 2026 um 18:17

    Danke 2002Andreas ,damit ist der Eintrag weg!

    milupo Ich möchte den Eintrag einfach weg haben, egal ob Deutsch oder Englisch, ich benötige ihn schlicht nicht!

    Thema ist damit erledigt, vielen Dank an alle Beteiligten. :thumbup::D

  • about:addons mit einigen Fehlern in 150.0 Nightly

    • Boersenfeger
    • 25. Februar 2026 um 18:14
    Zitat von 2002Andreas
    Zitat von 2002Andreas

    dann entfern bitte mal Zeile 142 - 147 und teste:

    Missverständnis.... Dann ist die Farbe verschwunden, ich möchte aber die Farbe behalten nur oben den hellen Streifen mit der Farbe füllen.

  • 2 Einträge in Kontextmenüs entfernen

    • Boersenfeger
    • 25. Februar 2026 um 17:56

    Die letzten 10 Einträge stammen von installierten Erweiterungen bzw. Scripts/Codes. Ich versuche dann mal Try and Error...

  • about:addons mit einigen Fehlern in 150.0 Nightly

    • Boersenfeger
    • 25. Februar 2026 um 17:52

    Hm, das ist doch exakt der Code, der da im Moment auch steht...:/

  • about:addons mit einigen Fehlern in 150.0 Nightly

    • Boersenfeger
    • 25. Februar 2026 um 17:34

    Danke für den Versuch, ich lasse den 3 Zeiler erst mal außen vor, dann kann ich wenigstens agieren. Für das andere Problem hast du keine Idee? :)

  • 2 Einträge in Kontextmenüs entfernen

    • Boersenfeger
    • 25. Februar 2026 um 17:13

    Danke an beide. :)

    Das funktioniert aber leider nicht:

    CSS
    /* Alle Tabs auswählen */
    #context_selectAllTabs {
      display: none;
    }

    ..auch nicht mit dem Zusatz !important;

    Habe es auch mit #context_listAllTabs versucht.. :rolleyes:

  • 2 Einträge in Kontextmenüs entfernen

    • Boersenfeger
    • 25. Februar 2026 um 14:21

    Mit welchen Codes entferne ich Alle Tabs auflisten aus allen Kontextmenüs und Open Link in Split View (M) aus dem Linkkontextmenü?

    Vielen Dank!

  • about:addons mit einigen Fehlern in 150.0 Nightly

    • Boersenfeger
    • 24. Februar 2026 um 16:19

    Moin, nach dem heutigen UpDate fehlen mir in about:addons zum einen rechts die Buttons: Einstellungen, deinstallieren etc und auf der linken Seite geht die Hintergrundfarbe dort, wo die Buttons Erweiterungen, Themes, Plugins etc. sind, nicht mehr bis zum oberen Rand. Nach meinen hoffnungslosen Versuchen, den Code zu ändern, lege ich ihn nun in eure bewährten Hände. :)


    CSS
        /*  Addons-Manager Nightly */
    
    /*  Versionsnummer der Addons wird angezeigt */
    
         @-moz-document url-prefix(chrome://mozapps/content/extensions/aboutaddons.html),
        url-prefix(chrome://mozapps/content/extensions/extensions.xhtml), url-prefix(about:addons){
            
         div:not([current-view="updates"]) .addon-name-link[title]::after,
        div:not([current-view="updates"]) .addon-name[title]::after {
        display: block !important;
        content: attr(title) !important;
        margin-top: -22px !important;
        } 
        
        /*restore version number */
        div:not([current-view="updates"]) .addon-name-link[title]:not([data-l10n-args])::after,
        div:not([current-view="updates"]) .addon-name[title]:not([data-l10n-args])::after {
          display: block !important;
          content: attr(title) !important;
          margin-top: -22px !important;
        }
    
    /*  Hintergrund der Button auf der rechten Seite */
    
        addon-list addon-card:not([expanded="true"]) panel-list * {
          background-color: antiquewhite !important;
          color: black !important;
          font-weight: bold !important;
        }
        
        addon-list.monochromatic-addon-list section addon-card div.card.addon addon-options panel-list {
          background: blanchedalmond !important;     
        }
        
        @supports -moz-bool-pref("browser.in-content.dark-mode") 
         @media (prefers-color-scheme: dark) 
         addon-list addon-card:not([expanded="true"]) panel-list *,
         .more-options-menu panel-item {
         background: black !important;
         color: white !important;
        
        }
        
        
        addon-list panel-item {
          margin: 0 1px !important;
          box-shadow: inset 0 0 3px 3px grey;
        }
        
       
    /*  Reduce Size of default Buttons */
    
        link:is([href$="panel-item.css"],[href$="panel-list.css"]) ~ button {
          width: unset !important;
          padding: 10px 24px !important; /* 5px ist die Höhe der rechten Button */
         
        }
        
    /*  Entfernt den Drei-Punkte-Button aus dem Container */
    
        addon-card .more-options-button {
          display: none !important;
        }
    
    /*  Remove Button Icon */
    
        addon-list panel-item {
          --icon: unset !important;
        
        }
        
    /*  Restore Buttons */
        
        addon-list .more-options-menu :is(addon-options,plugin-options) panel-list {
          position: relative !important;
          display: block !important;
          overflow: hidden !important;
          margin-top: -25px;
          background: unset !important;
          border: unset !important;
          box-shadow: unset !important;
          min-width: unset !important;
          width: unset !important;     
        }
    
        div.arrow.top + div.list {
          display: flex !important;
          flex-flow: row wrap !important;
          justify-content: flex-start !important;
        } 
        
         div[role="presentation"].list {
          display: flex !important;
          flex-flow: row wrap !important;
          justify-content: flex-start !important;
        }
    
        panel-item[action="preferences"] {
          order: -1;
        }
        
        panel-item[badged] {
          border: 1px solid Highlight !important;
        }
        
        panel-item[badged]::after,
        :host([badged]) button::after,
        link:is([href$="panel-item.css"],[href$="panel-list.css"]) ~ button::after,
        :is(addon-options,plugin-options) button::after {
          display: none !important;
          content: unset !important;
        }
        
        addon-page-options panel-list {
          min-width: unset !important;
          width: auto !important;
          max-width: 300px !important;
          z-index: 1000 !important;      
        }
        
        addon-page-options panel-list panel-item {
          min-width: 280px !important;
          width: 280px !important;     
        }
        
        .sticky-container {
          z-index: 1000 !important;
        }
        
        link:-is([href$="panel-item.css"],[href$="panel-list.css"]) ~ button label[accesskey] {
          padding-inline-start: 0px !important;
          padding-top: 3px !important;
          padding-bottom: 3px !important;
          min-width: 260px !important;
          width: 260px !important;      
        }
    
        addon-page-options panel-list panel-item[accesskey][checked] {
          background: url("chrome://global/skin/icons/check.svg") 5px no-repeat !important;
        }
            
        addon-list addon-card:not([expanded="true"]) panel-list {     
          display: block !important;   
          box-shadow: none !important; 
          border: none !important;
          right: 45px !important; /* Abstand der Button bei Erweiterungen vom rechten Rand */     
        }
    
    /*  Abstand zwischen den Containern */  
        
        addon-card .addon { 
        margin: 5px !important; 
        }
    
    /*  Höhe der Container */
        
        addon-list[type="extension"]{ 
        --card-padding: 19px }
        addon-card .addon-card-collapsed { 
        margin-bottom: 2px !important; /* Button rechts Abstand vom oberen Rand */   
        }    
    
    /*  Abstand der Button vom rechten Rand bei Themes, Plugins, Wörterbücher, usw.*/
        
        addon-list:is([type="theme"],[type="plugin"],[type="dictionary"]) 
        addon-card:not([expanded="true"]) 
        panel-list {
        right: 55px !important;
        }
    
    /*  Abstand der Button vom oberen Rand bei Plugins, Wörterbücher, usw. */
        
        addon-list addon-card:not([expanded="true"]) panel-list {
        margin-top: -42px !important;
        }
    
    /*  Abstand der Button vom oberen Rand bei Themes */
        
        addon-list:is([type="theme"]) addon-card:not([expanded="true"]) panel-list {
          margin-top: -46px !important;
          margin-left: -100px !important;
        }
        
    /*  Entfernung Bereich Farbgebungen */
    
        addon-list.monochromatic-addon-list {
        display: none !important;
        }    
    
    /*  Ausdehnung der Container zum rechten Rand */    
    
        .addon.card {
        width: 1400px;
        }
    
        input[type="checkbox"].toggle-button {
          margin-right: 430px !important; /* blauer Button -Deaktivieren/Aktivieren- Abstand vom rechten Rand */
        }
        
    /*  Nummerierung der installierten Erweiterungen im AddonsManager */
    
        body {
        counter-reset: section !important;                   
        }
        #main > addon-list:nth-child(1) > section:nth-child(2) > addon-card:nth-child(n+1) > div:nth-child(1) > div:nth-child(2)::before {
        font-size:18px!important;  
        color: red !important;
        font-weight: bold !important;
        counter-increment: section;                 
        content: counter(section, decimal-leading-zero)". ";
        margin-left: -8px !important;
        padding-right: 8px !important; 
        margin-top:4px!important;
        }
        
    /*  Abstand der Button zum linken Rand */
        
        #categories > .category, #preferencesButton, #helpButton, #addonsButton {
          margin-left: 5px !important; 
        }
    
        #categories > .category:not([disabled]){
          background-color: gainsboro !important;/*Hintergrundfarbe vom Button*/
          margin-top: 2px !important; /*Abstand zum Button darüber*/
          border-radius: 60px !important;/*Rundung vom Button*/
          box-shadow: inset 0 0 5px 5px #888;
        }
        
    /*  Aktiver Button rot, Schrift weiß */
        
        #categories > .category[selected]{
          color: white !important;
          background-color: red !important;
          margin-top: 1px !important;
          border-radius: 60px !important;
          box-shadow: inset 0 0 5px 5px #888; 
        }
    
    /*  Hintergrund der Button blau, Schrift weiß bei hover mit der Maus */
        
        #categories > .category:hover, #preferencesButton:hover, #helpButton:hover, #addonsButton:hover {
          color: white !important;
          background-color: blue !important;
          margin-top: 1px !important;
          border-radius: 60px !important;
          box-shadow: inset 0 0 5px 5px #888;      
        }
            
    /*  Optionen-Button */
    
        button.more-options-button:nth-child(1) {
    
        position: absolute !important;
        left: 19% !important;
        margin-top: -10px !important;
        }
    
    /*  Bei "Themes" die Grafiken ausblenden */
        
        .card-heading-image {
        display: none !important;
        }
          
        
    /*  Erweiterungssuche ausblenden */
    
        .main-search {
        display: none !important;
        }
        
    /*  Ausblenden Firefox Optionen */
    
        #preferencesButton,
        #help-button {
        display: none !important;
    	}
        
    /*  Kategorien in abgerundeten Buttons */
    
        #preferencesButton,
        #addonsButton,
        #helpButton,
        #category-availableUpdates {
        background-color: red !important;
        margin-top:5px !important;
        border-radius:60px !important;
        }    
    
    /*  Add-ons entdecken entfernt */
    
        .category[name="discover"] {
        display:none!important;
        }
        
    /*  Privatmodus und empfohlene Erweiterungen Icons entfernen */
    
        .addon-badge-recommended,
        .addon-badge-private-browsing-allowed {
        display:none !important; 
        }
    
    
    /*  Umrandung bei Hover breiter Rand und andere Farbe */
    
        :root {
        --card-outline-color: LimeGreen !important;
        }
    	}
        
        @-moz-document url-prefix(chrome://mozapps/content/extensions/aboutaddons.html),
        url-prefix(about:addons) {
    
       #sidebar {
        background: darkkhaki !important;
        }
        .main-search,
        .sticky-container,
        .main-heading,
        #content {
        background: blanchedalmond !important;
        font-size: 15px !important;
        }
        richlistbox.list > richlistitem.addon {
        background:white!important;
        margin-left:-20px !important;
        margin-top:  7px !important;
        }
        #list-view > #addon-list .description-container {
        margin-left: 350px !important;
        margin-top: -10px !important;
        border-radius:60px !important;
        padding: 5px 8px 2px 7px !important; 
        }    
        #list-view > #addon-list .addon.addon-view {
        padding: 5px 80px 2px 7px !important;
        border-radius:60px !important;
        }
    
    /*  Kategorien nicht angeklickt, Text dunkelrot */
    
        *|*.category {
        color:darkred!important;
        }
    
    /*  Kategorien hover Hintergrund + Schrift */
    
        *|*.category:hover {
        color:white!important;
        background:red!important;
        }
    	}
    
    /*  Einstellungen-Fenster verbreitern */
        
       @-moz-document url-prefix(chrome://mozapps/content/extensions/aboutaddons.html),
        url-prefix(chrome://mozapps/content/extensions/extensions.xhtml), url-prefix(about:addons) { 
    	
        .pane-container{
        width: 900px !important;
        }                      
        
    /*  Unter Plugins Nachfragen ob aktiviert werden soll entfernt */
    
        #main > div:nth-child(1) > addon-list:nth-child(1) > section:nth-child(2) > addon-card:nth-child(2) > div:nth-child(1) > plugin-options:nth-child(5) > panel-list:nth-child(1) > panel-item:nth-child(1),
        #main > div:nth-child(1) > addon-list:nth-child(1) > section:nth-child(2) > addon-card:nth-child(3) > div:nth-child(1) > plugin-options:nth-child(5) > panel-list:nth-child(1) > panel-item:nth-child(1) {
        display: none !important;
        }
        
    /*  Button mit dem Zahnrad */
    
      .page-options-menu > .more-options-button{
          fill: red !important; /* rotes Zahnrad */ 
          border: 1px solid grey !important; /* farbige Umrandung */
          border-radius: 15px !important; /* Abrundung */
          width: 60px !important; /* Länge des Button */
          height: 30px ! important; /* Höhe des Button */
          box-shadow: inset 0 0 2px 2px grey; /* innerer Schatten */
        } 
        
    /*  Button oben mit dem Zahnrad bei Hover */
    
        .page-options-menu > .more-options-button:hover {
          fill: lime !important; /* Farbe des Zahnrades */
        }
    
    /*   Aussehen des Menü hinter dem Zahnrad */
    
        link:is([href$="panel-item.css"],[href$="panel-list.css"]) ~ button label[accesskey] {
          margin-left: 6% ! important;
          min-width: 50px !important;
          width: 175px !important; /* Länge der einzelnen Felder */
          background: white ! important; /* Farbe des Hintergrundes */
        }
        
        link:is([href$="panel-item.css"],[href$="panel-list.css"]) ~ button label[accesskey]:hover {
          background: lightyellow !important;    
        }  
        .sticky-container {
          z-index: 1000 !important;
        }
    
         button:focus {
         background: none !important;
     }
     
        addon-page-options panel-list panel-item {
          width: 425px !important; /* Länge der aktivierten Menü-Leiste */
          background: none ! important;
          padding-right: 15px !important;
        }
        
        addon-page-options panel-list panel-item:hover {
          width: 425px !important; 
          background: lime ! important;
          color: red !important;
        }    
    
        addon-page-options panel-list {
          min-width: unset !important;
          width: auto !important;
          max-width: 450px !important; /* Ausdehnung der Felder nach rechts */ 
          background: #f8f8ff ! important; /* farbiger Hintergrund des Feldes */
          padding-left: 8px !important; /* Ausdehnung nach links */
          padding-right: 3px !important; /* Ausdehnung nach rechts */
          z-index: 1000 !important;
        }
        
    /*  Hintergrund der Box Updates automatisch aktualisieren */
        addon-page-options panel-list panel-item[accesskey][checked] {
          background: gold !important;
        }           
        
    /*  Zurückbutton bei geöffnetem Menü Einstellung/Verwalten */
    
        .back-button {
          background-color: silver !important;/*Hintergrundfarbe vom Button*/
          width: 60px !important;
          border-radius: 60px !important;/*Rundung vom Button*/
          box-shadow: inset 0 0 3px 3px #888;
        }
        
        .back-button:hover {
          color: white !important;
          background-color: dodgerblue !important;
          border-radius: 60px !important;
          box-shadow: inset 0 0 3px 3px #888;
        }    
    
    /*  Icons des Stern-Kontextmenü */
    
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(1)::before {
         content: '';
         display: block;
         width: 16px;
         height: 16px;
         background: url("..//icons/Bild5.png") no-repeat !important;
         background-size: 16px 16px !important;
         margin-left: 15px;
         margin-right: -31px;}
    
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(2)::before {
         content: '';
         display: block;
         width: 16px;
         height: 16px;
         background: url("..//icons/Bild61.png") no-repeat !important;
         background-size: 16px 16px !important;
         margin-left: 15px;
         margin-right: -31px;}
     
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(4)::before {
          content: '';
         display: block;
         width: 16px;
         height: 16px;
         background: url("..//icons/Bild3.png") no-repeat !important;
         background-size: 16px 16px !important;
         margin-left: 15px;
         margin-right: -31px;}
    
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(5)::before {
         content: '';
         display: block;
         width: 16px;
         height: 16px;
         background: url("..//icons/Bild66.ico") no-repeat !important;
         background-size: 16px 16px !important;
         margin-left: 15px;
         margin-right: -31px;}
    
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(7) {
         fill: transparent !important;}
         
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(7)::before {
         content: '';
         display: block;
         width: 16px;
         height: 16px;
         background: url("..//icons/Bild62.png") no-repeat !important;
         background-size: 18px 18px !important;
         margin-left: 16px;
         margin-right: -32px;
         margin-bottom: 3px;}
        
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(7):not([checked])::before {
         content: '';
         font-size: 14px;
         padding-left: 0px !important;
         padding-top: 1px !important;
         padding-bottom: 2px !important;
         display: block;
         width: 16px;
         height: 16px;
         background: url("..//icons/Bild63.png") no-repeat !important;
         background-size: 18px 18px !important;
         margin-left: 15px;
         margin-right: -32px;
         margin-bottom: 3px;}
        
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(8)::before {
         content: '';
         display: block;
         width: 16px;
         height: 16px;
         background: url("..//icons/Bild64.png") no-repeat !important;
         background-size: 16px 16px !important;
         margin-left: 15px;
         margin-right: -31px;}
    
        #page-options > panel-list:nth-child(1) > panel-item:nth-child(10)::before {
         content: '';
         display: block;
         width: 16px;
         height: 16px;
         background: url("..//icons/Bild67.png") no-repeat !important;
         background-size: 16px 16px !important;
         margin-left: 15px;
         margin-right: -31px;}    
         
    	}
    /*        About:addons  - Optionen Schaltfläche */
        
        @-moz-document url("about:addons"){
        
        #utils-updateNow{
        appearance: none !important;
        background: url("..//icons/Bild5.png") no-repeat !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left:28px!important;
        background-position:6px 5px!important;}
    
        #utils-updateNow:hover{
        appearance: none !important;
        margin-right: -1px !important;
        background: #ecf0f6 url("..//icons/Bild5.png") no-repeat !important;    
        border-width: thin !important;
        border-radius: 4px !important;
        border-color: #aecff7 !important;
        border-style: solid !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left:28px!important;
        background-position:6px 5px!important;}
    
        #utils-viewUpdates{
        appearance: none !important;
        background: url("..//icons/Bild61.png") no-repeat !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left:28px!important;
        background-position:6px 5px!important;}
    
        #utils-viewUpdates:hover{
        appearance: none !important;
        margin-right: -1px !important;
        background: #ecf0f6 url("..//icons/Bild61.png") no-repeat !important;    
        border-width: thin !important;
        border-radius: 4px !important;
        border-color: #aecff7 !important;
        border-style: solid !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left:28px!important;
        background-position:6px 5px!important;}
    
        #utils-installFromFile{
        appearance: none !important;
        background: url("..//icons/Bild3.png") no-repeat !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left:28px!important;
        background-position:6px 5px!important;}
    
        #utils-installFromFile:hover{
        appearance: none !important;
        margin-right: -1px !important;
        background: #ecf0f6 url("..//icons/Bild3.png") no-repeat !important;    
        border-width: thin !important;
        border-radius: 4px !important;
        border-color: #aecff7 !important;
        border-style: solid !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}
    
        #utils-autoUpdateDefault[type="checkbox"][checked="true"]>.menu-iconic-left{
        appearance: none !important;
        background: url("..//icons/Bild62.png")no-repeat !important;
        height:15px!important;
        padding-top:1px!important;
        margin-left:5px !important;}
    
        #utils-autoUpdateDefault[type="checkbox"][checked="true"]>.menu-iconic-text {
        padding-left: 12px !important;}
    
        #utils-autoUpdateDefault[type="checkbox"][checked="false"]>.menu-iconic-left{
        appearance: none !important;
        background: url("..//icons/Bild63.png")no-repeat !important;
        height: 15px!important;
        padding-top: 1px!important;
        margin-left: 7px !important;}
    
        #utils-autoUpdateDefault[type="checkbox"][checked="false"]>.menu-iconic-text{
        padding-left: 10px !important;}
    
        #utils-resetAddonUpdatesToAutomatic{
        appearance: none !important;
        background: url("..//icons/Bild64.png") no-repeat !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}
    
        #utils-resetAddonUpdatesToAutomatic:hover{
        appearance: none !important;
        margin-right: -1px !important;
        background: #ecf0f6 url("..//icons/Bild64.png") no-repeat !important;    
        border-width: thin !important;
        border-radius: 4px !important;
        border-color: #aecff7 !important;
        border-style: solid !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}
    
        #utils-resetAddonUpdatesToManual{
        appearance: none !important;
        background: url("..//icons/Bild65.png") no-repeat !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}
    
        #utils-resetAddonUpdatesToManual:hover{
        appearance: none !important;
        margin-right: -1px !important;
        background: #ecf0f6 url("..//icons/Bild65.png") no-repeat !important;    
        border-width: thin !important;
        border-radius: 4px !important;
        border-color: #aecff7 !important;
        border-style: solid !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}    
    
        #utils-debugAddons{
        appearance: none !important;
        background: url("..//icons/Bild66.ico") no-repeat !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}
    
        #utils-debugAddons:hover{
        appearance: none !important;
        margin-right: -1px !important;
        background: #ecf0f6 url("..//icons/Bild66.ico") no-repeat !important;    
        border-width: thin !important;
        border-radius: 4px !important;
        border-color: #aecff7 !important;
        border-style: solid !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}    
    
        #manage-shortcuts{
        appearance: none !important;
        background: url("..//icons/Bild67.png") no-repeat !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}
    
        #manage-shortcuts:hover{
        appearance: none !important;
        margin-right: -1px !important;
        background: #ecf0f6 url("..//icons/Bild67.png") no-repeat !important;    
        border-width: thin !important;
        border-radius: 4px !important;
        border-color: #aecff7 !important;
        border-style: solid !important;
        min-height: 24px!important;
        padding-top: 5px! important;
        padding-left: 28px!important;
        background-position: 6px 5px!important;}
        
        #empty-addons-message {
        display: none !important;
        }
        }
    	
    	/* @-moz-document url-prefix(chrome://browser/content/browser.xhtml)*/
    	
    	{
        /*both*/
    
        #unified-extensions-area .unified-extensions-item-message-deck .unified-extensions-item-message,
        .unified-extensions-list .unified-extensions-item-message-deck,
        menupopup#unified-extensions-context-menu .unified-extensions-context-menu-report-extension,
        menupopup#unified-extensions-context-menu .unified-extensions-context-menu-remove-extension
        {
        display: none !important;
        }
    
    
        /*grid*/
    
        #unified-extensions-view
        width: unset !important;
        }
    
        #unified-extensions-area,
        .unified-extensions-list
        {
            display: grid !important;
            grid-template-columns: repeat(3, 1fr) !important;
            width: 200px !important;
        }
    
        #unified-extensions-panel toolbaritem.unified-extensions-item
        {
            max-width: unset !important;
            width:  62px !important;
            height: 30px !important;
            background-color: rgba(80, 80, 80, 0.6) !important;
            margin: 1px !important;
            border-radius: 4px !important;
            border: 1px solid #666 !important;
            padding: 0 2px !important;
        }
    
        .unified-extensions-list .unified-extensions-item
        {
            max-width: unset !important;
            width:  56px !important;
            height: 28px !important;
            background-color: rgba(67, 67, 94, 0.6) !important;
            margin: 1px !important;
            border-radius: 4px !important;
            border: 1px solid #666 !important;
            padding: 0 2px !important;
        }
    
        .unified-extensions-item-action-button
        {
            overflow: visible !important;
            max-height: 24px !important;
        }
    
        .unified-extensions-item[unified-extensions="true"] .webextension-browser-action > .toolbarbutton-badge-stack
        {
            margin-inline-end: 0 !important;
        }
    
        .unified-extensions-item .unified-extensions-item-menu-button.subviewbutton
        {
            margin-inline-start: 0 !important;
        }
    
        .unified-extensions-item-menu-button.subviewbutton > .toolbarbutton-icon
        {
            padding: unset !important;
        }
    
        .toolbaritem-combined-buttons:is(:not([cui-areatype="toolbar"]),
        [overflowedItem="true"]) > toolbarbutton:not(.toolbarbutton-1)[disabled]
        {
            opacity: 1 !important;
        }
    
        /*hover name regular*/
    
        #unified-extensions-area .subviewbutton
        {
            padding: 2px !important;
        }
    
        #unified-extensions-area .unified-extensions-item image.toolbarbutton-icon
        {
            opacity: 1 !important;
            margin-left:  2px !important;
            padding: 0 !important;
            height: 16px !important;
            width: 16px !important;
        }
    
        #unified-extensions-area .unified-extensions-item:hover .unified-extensions-item-menu-button image.toolbarbutton-icon
        {
            margin-left:  0 !important;
        }
    
        #unified-extensions-area .unified-extensions-item .unified-extensions-item-action-button
        {
            width: 26px !important;    
            margin-right: 6px !important; 
        }
    
        #unified-extensions-area .unified-extensions-item:hover .unified-extensions-item-action-button[disabled="true"]
        {
            opacity: 1 !important;
        }
    
        #unified-extensions-area .unified-extensions-item:not(hover) .unified-extensions-item-contents .unified-extensions-item-name
        {
            display: none !important;
        }
    
        #unified-extensions-area .unified-extensions-item:hover .unified-extensions-item-contents .unified-extensions-item-name
        {
            display: block !important;
            position: relative;
            top: -8px;
            left: 0px;
            background: #eee;
            color: #000;
            border-radius: 3px;
            width: 120px !important;
            min-height: 18px !important;
            z-index: 999 !important;
           
        }
    
        #unified-extensions-panel toolbaritem.unified-extensions-item:nth-of-type(3n-2):hover .unified-extensions-item-contents .unified-extensions-item-name
        {
            left: -20px !important;
        }
    
        #unified-extensions-panel toolbaritem.unified-extensions-item:nth-of-type(3n-1):hover .unified-extensions-item-contents .unified-extensions-item-name
        {
            left: -70px !important;
        }
    
        #unified-extensions-panel toolbaritem.unified-extensions-item:nth-of-type(3n):hover .unified-extensions-item-contents .unified-extensions-item-name
        {
            left: -120px !important;
        }
    
    
        /*hover name unified*/
    
        .unified-extensions-list .unified-extensions-item-action-button:hover
        {
            background-color: rgba(251, 251, 254, 0.09) !important;
        }
    
        .unified-extensions-list .subviewbutton
        {
            padding: 2px !important;
            margin: 0 !important;
        }
    
        .toolbaritem.unified-extensions-item .unified-extensions-list 
        {
            margin: 0 0 0 8px !important;
        }
        
        .unified-extensions-item-icon
        {
            opacity: 0.5;
        }
    
        .unified-extensions-list image.unified-extensions-item-icon
        {
            opacity: 1 !important;
            margin-left: 2px !important;
            padding: 0 !important;
            height: 16px !important;
            width: 16px !important;
        }
    
        .unified-extensions-list .unified-extensions-item image.toolbarbutton-icon
        {
            margin-left:  4px !important;
        }
    
        .unified-extensions-list .unified-extensions-item .unified-extensions-item-action-button
        {
            width: 26px !important;
            margin-right: 4px !important;
        }
    
        .unified-extensions-list .unified-extensions-item .unified-extensions-item-action-button:not(hover) .unified-extensions-item-contents label
        {
            display: none !important;
        }
    
        .unified-extensions-list .unified-extensions-item .unified-extensions-item-action-button:hover .unified-extensions-item-contents label
        {
            display: block !important;
            position: relative;
            top: -10px;
            left: 0px;
            background: #eee;
            color: #000;
            border-radius: 3px;
            width: 120px !important;
            min-height: 18px !important;
        }
    
        .unified-extensions-list .unified-extensions-item:nth-of-type(3n-2) .unified-extensions-item-action-button:hover .unified-extensions-item-contents label
        {
            left: -5px !important;
        }
    
        .unified-extensions-list .unified-extensions-item:nth-of-type(3n-1) .unified-extensions-item-action-button:hover .unified-extensions-item-contents label
        {
            left: -60px !important;
        }
    
        .unified-extensions-list .unified-extensions-item:nth-of-type(3n) .unified-extensions-item-action-button:hover .unified-extensions-item-contents label
        {
            left: -110px !important;
        }
    Alles anzeigen
  • Symbole in den Kontextmenüs [ Update ]

    • Boersenfeger
    • 22. Februar 2026 um 14:33
    Zitat von Endor

    Einen Fehler habe ich noch.
    Ich verwende dieses Script:

    Code
    // ==UserScript==
    // @name           UndoListInTabmenuToo
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    UndoListInTabmenuToo.uc.js
    // @include        main
    // @compatibility  Firefox 140
    // @author         Alice0775
    // @version        2025/09/05 mark '*' for current index in the tooltip
    // @version        2025/08/06 fix tooltip bug due to the change of 25/01/05
    // @version        2025/07/26 add List All Tabs menu
    // @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 verwenden
    // @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 (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");
        }
        // get closed-tabs from nsSessionStore
        this._ss = SessionStore;
    
      },
    
      makePopup: function(popup, refItem, id){
        var menu;
        //label
        const locale = "de";
        
        // "Recently Closed Windows"
        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 geschossener Tabs
        const LABELTEXT = "K\u00FCrzlich geschlossene Tabs";    //create menu
        menu = document.createXULElement("menu");
        menu.setAttribute("label", LABELTEXT);
        menu.setAttribute("accesskey", "T");
        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);
    
        //All tabs menu
        menu = document.createXULElement("menuitem");
        menu.setAttribute("label", "Alle Tabs auflisten");
        menu.setAttribute("accesskey", "A");
        popup.insertBefore(menu, refItem);
        menu.addEventListener("command", (event) => {document.getElementById("alltabs-button").click()})
    
    
        //add event listener
        popup.addEventListener('popupshowing',function(event) {
          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);
      },
    
      /**
       * 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);
    
        // populate tab historis for tooltip
        var undoItems = UndoListInTabmenu._ss.getClosedTabDataForWindow(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";
            if (undoItems[i].state.index - 1 !== j) {
              tooltiptext += parseInt(j + 1, 10) + ". " + entries[j].title;
            } else {
              tooltiptext += "*" + ". " + entries[j].title;
            }
          }
          undoPopup.childNodes[i].setAttribute("tooltiptext", tooltiptext);
        }
    
        // "Append Clear undo close tb list"
        undoPopup.appendChild(document.createXULElement("menuseparator"));
    
        let m = undoPopup.appendChild(document.createXULElement("menuitem"));
        m.setAttribute("label", "Liste der letzten Tabs l\u00F6schen");
        m.setAttribute("accesskey", "l");
        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(menu) {
        // enable/disable the Recently Closed Windows sub menu
        // no restorable windows, so disable menu
        if (this._ss.getClosedWindowCount() == 0)
          menu.setAttribute("disabled", true);
        else
          menu.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");
    
        // "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", "L");
        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

    Endor

    Hier werkelt eine neuere Version des Scripts:

    Code
    // ==UserScript==
    // @name           UndoListInTabmenuToo
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    UndoListInTabmenuToo.uc.js
    // @include        main
    // @author         Alice0775
    // @compatibility  Firefox 149
    // @version        2026/01/16 00:00 fix bug
    // @version        2026/01/13 00:00 compatibility 149 from 148
    // @version        2026/01/07 Bug 2008041 - Make XUL disabled / checked attributes html-style boolean attributes.
    // @version        2025/09/05 mark '*' for current index in the tooltip
    // @version        2025/08/06 fix tooltip bug due to the change of 025/01/05
    // @version        2025/07/26 add List All Tabs menu
    // @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 ツールチップにタブ内履歴を表示するようにした
    // @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 ,  // Im Hauptkontextmenü: 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 (this.TABCONTEXTMENU){
          
          var tabContext = this.tabContext;
          this.makePopup(tabContext, null, "tabContextUndoList");
        }
        if (this.CONTEXTMENU){
          
          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){
        var menu;
        //label
        const locale = "en";
        
        //Liste kürzlich geschlossener Tabs
        const LABELTEXT = "K\u00FCrzlich geschlossene Tabs";    //Menü erstellen
        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.addEventListener("popupshowing", () => UndoListInTabmenu.populateUndoSubmenu(menupopup));
        //menupopup.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoSubmenu(this);");
        menu.appendChild(menupopup);
        popup.insertBefore(menu, refItem);
    	
        //Tabs Menü
        menu = document.createXULElement("menuitem");
        menu.setAttribute("label", "Alle Tabs auflisten");
        menu.setAttribute("accesskey", "A");
        popup.insertBefore(menu, refItem);
        menu.addEventListener("command", (event) => {document.getElementById("alltabs-button").click()})
    
    	//Eventlistener hinzufügen
        popup.addEventListener('popupshowing',function(event) {
          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);
      },
    
      toggleRecentlyClosedTabs: function toggleRecentlyClosedTabs(menu) {
        // enable/disable the Recently Closed Windows sub menu
        // no restorable windows, so disable menu
        menu.toggleAttribute("disabled", this._ss.getClosedTabCount(window) == 0);
      },
    
    
      /**
       * Befüllen, wenn das Chronik-Menü geöffnet ist
       */
      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);
    
        // populate tab historis for tooltip
        var undoItems = UndoListInTabmenu._ss.getClosedTabDataForWindow(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";
            if (undoItems[i].state.index - 1 !== j) {
              tooltiptext += parseInt(j + 1, 10) + ". " + entries[j].title;
            } else {
              tooltiptext += "*" + ". " + entries[j].title;
            }
          }
          undoPopup.childNodes[i].setAttribute("tooltiptext", tooltiptext);
        }
    
       // "Liste geschlossener Tabs l\u00F6schen anfügen"
        undoPopup.appendChild(document.createXULElement("menuseparator"));
    
        let m = undoPopup.appendChild(document.createXULElement("menuitem"));
        m.setAttribute("label", "Clear undo close tab list");
        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(menu) {
        // enable/disable the Recently Closed Windows sub menu
        // no restorable windows, so disable menu
        if (this._ss.getClosedWindowCount() == 0)
          menu.setAttribute("disabled", true);
        else
          menu.removeAttribute("disabled");
      },
      
      /**
       * Beim Öffnen des Verlaufsmenüs ausfüllen
       */
      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");
    
        // "Anhängen Löschen Rückgängig Fenster schließen Liste"
        undoPopup.appendChild(document.createXULElement("menuseparator"));
    
        m = undoPopup.appendChild(document.createXULElement("menuitem"));
        m.setAttribute("label", "Clear undo close window list");
        m.setAttribute("accesskey", "C");
        m.addEventListener("command", function() {
          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

    LG
    Boersenfeger

  • web.de Firefox 147.0.4

    • Boersenfeger
    • 20. Februar 2026 um 15:54

    Nutzt du sogenannte Sicherheitstipps, die du in irgendeiner PC-Zeitung oder im Internet aufgesammelt hast?

  • Der Glückwunsch-Thread

    • Boersenfeger
    • 20. Februar 2026 um 15:23

    Wow, vielen Dank für deine Glückwünsche und Würdigung. Da werde ich ja ganz verlegen... :D

  • userCSSloader.uc.js mag nicht die Styles laden

    • Boersenfeger
    • 17. Februar 2026 um 17:56

    Oh... Frag vielleicht mal im Thread nach, der in Zeile 8 hinterlegt ist. Ich bin ja auch nur ahnungslos und Konsument.

  • userCSSloader.uc.js mag nicht die Styles laden

    • Boersenfeger
    • 17. Februar 2026 um 14:43

    Moin, ich nutze die modifizierte Datei....

    JavaScript
     /* UserCSSLoader
     * original author: Griever -
     * https://github.com/Griever/userChromeJS/tree/master/UserCSSLoader
     *
     * Enhancements and several other changes including German translation
     * and configuration section by users aborix, Endor, bege, Speravir of
     * Camp Firefox forum - https://www.camp-firefox.de/forum/ - latest version:
     * https://www.camp-firefox.de/forum/thema/138814/?postID=1278991#post1278991
     */
    
    /****** Bedienungsanleitung ******
    
    CSS-Ordner im Chrome-Ordner erstellen, CSS-Dateien dort ablegen - speichern.
    Diejenigen, deren Dateiname mit "xul-" beginnen, diejenigen, die mit ".as.css"
    enden, sind AGENT_SHEET, alle anderen außer USER_SHEET werden gelesen. Da der
    Inhalt der Datei nicht überprüft wird, darauf achten, die Angabe von @namespace
    nicht zu vergessen!
    
    Schaltfläche oder Menü wird in Navigationsleiste eingefügt (einstellbar, siehe
    Variable "position" in unten anschließender Konfiguration).
    
    Dateiordner, Dateimanager und Texteditor können in der unten anschließenden
    Konfiguration geändert werden. Die Verwendung des in "view_source.editor.path"
    angegebenen Editors ist möglich.
    
    Linksklick auf Stil, zum Aktivieren/Deaktivieren
    Mittelklick auf Stil zum Aktivieren/Deaktivieren, ohne Menü zu schließen
    Rechtsklick auf Stil zum Öffnen im Editor
    Strg+Linksklick zum Anzeigen im Dateimanager
    
    Die Tastenkombinationen können im Menü eingeblendet werden, dazu nach 
    "acceltext" suchen und den Zeilenkommentar "//" entfernen.
    
    Ein Symbol für die Schaltfläche muss in der "userChrome.css" festgelegt werden,
    Pfad zum Bild (PNG nur als Beispiel):
    * relativ zur userChrome.css
        background-image: url("Relativer/Pfad/zum/CSS_Symbol.png");
    * eine absolute Pfadangabe zum Symbol muss mit File-Protokoll-Präfix erfolgen:
        background-image: url("file:///Absoluter/Pfad/zum/CSS_Symbol.png");
    
    #usercssloader-menu-item {
    	background-image: url("Relativer/Pfad/zum/CSS_Symbol.png");
    	background-position: center;
    	background-repeat: no-repeat;
    	background-size: 16px;
    
    	&:hover {
    		background-color: var(--toolbarbutton-hover-background);
    	}
    
    	& #usercssloader-menu > .menu-text[value="CSS"] {
    		opacity: 0;
    		width: calc(2 * var(--toolbarbutton-inner-padding) + 16px);
    		height: calc(2 * var(--toolbarbutton-inner-padding) + 16px);
    	}
    }
    
    **** Anleitung Ende ****/
    
    (function(){
    
    /***** Konfiguration *****/
    /* Position: als frei verschiebbare-Schaltfläche = 0, als Menü anzeigen = 1 */
    let position = 0;//1
    /* Dateimanager festlegen, Beispiele:
     *    let fileManager = "C:\\Programme\\FreeCommanderXE\\FreeCommander.exe";
     *    let fileManager = "C:\\Programme\\totalcmd\\TOTALCMD.EXE";
     * auch möglich:
     *    let fileManager = "C:\\Windows\\explorer.exe";
     * Bleibt Parameter leer, wird Standardmanager des Systems ohne Parameter
     * verwendet mit leicht eingeschränkter Funktionalität. */
    let fileManager = "";
    /* eventuelle Parameter für den Dateimanager, Beispiele:
     *    let fileManagerParam = "/T";//FreeCommander oder Totalcommander
     *    let fileManagerParam = "/select,";//Windows Explorer, mit Komma korrekt!
     */
    let fileManagerParam = "";
    /* manche Manager benötigen den Parameter nach der Pfadangabe,
       dann "fileManagerParamPost" auf true setzen */
    let fileManagerParamPost = false;
    /* eigener Texteditor mit Pfad - Standard leer, dann wird Wert aus
     * Einstellung "view_source.editor.path" verwendet mit Warnmeldung,
     * wenn auch dieser leer ist, Beispiel:
     *    let customEditor = "C:\\Windows\\System32\\notepad.exe"; */
    let customEditor = "";
    /* Unterordner für die CSS-Dateien */
    let cssFolder = "CSS";
    /* Menüeintrag zum Bearbeiten der userChrome.css anzeigen (true)
       oder verstecken (false) */
    let showUserChromeCSS = true;
    /* Menüeintrag zum Bearbeiten der userContent.css anzeigen (true)
       oder verstecken (false) */
    let showUserContentCSS = true;
    /* zusätzlich Chrome-Ordner im Untermenü anzeigen (true)
       oder verstecken (false) */
    let showChrome = true;
    /***** Ende der Konfiguration *****/
    
    // Wenn beim Start ein weiteres Fenster (zweites Fenster) vorhanden ist, beenden
    let list = Services.wm.getEnumerator("navigator:browser");
    while(list.hasMoreElements()){ if(list.getNext() != window) return; }
    
    if (window.UCL) {
    	window.UCL.destroy();
    	delete window.UCL;
    }
    
    let menutooltip = "Linksklick: an/aus, Menü schließt\nMittelklick: an/aus, Menü bleibt offen\nRechtsklick: bearbeiten";
    if (fileManager !== "") {
    		menutooltip = menutooltip + "\nStrg+Rechtsklick: im Dateimanager anzeigen";
    }
    
    window.UCL = {
    	AGENT_SHEET : Ci.nsIStyleSheetService.AGENT_SHEET,
    	USER_SHEET  : Ci.nsIStyleSheetService.USER_SHEET,
    	AUTHOR_SHEET: Ci.nsIStyleSheetService.AUTHOR_SHEET,
    	readCSS: {},
    	get disabled_list() {
    		let obj = [];
    		try {
    			obj = decodeURIComponent(this.prefs.getCharPref("disabled_list")).split("|");
    		} catch(e) {}
    		delete this.disabled_list;
    		return this.disabled_list = obj;
    	},
    	get prefs() {
    		delete this.prefs;
    		return this.prefs = Services.prefs.getBranch("UserCSSLoader.");
    	},
    	get styleSheetServices() {
    		delete this.styleSheetServices;
    		return this.styleSheetServices = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
    	},
    	get FOLDER() {
    		let aFolder;
    		try {
    			// UserCSSLoader.FOLDER verwenden
    			let folderPath = this.prefs.getCharPref("FOLDER");
    			aFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
    			aFolder.initWithPath(folderPath);
    		} catch (e) {
    			aFolder = Services.dirsvc.get("UChrm", Ci.nsIFile);
    			aFolder.appendRelativePath(cssFolder);
    		}
    		if (!aFolder.exists() || !aFolder.isDirectory()) {
    			aFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0o664);
    		}
    		delete this.FOLDER;
    		return this.FOLDER = aFolder;
    	},
    	get CHRMFOLDER() {
    			let cFolder;
    			try {
    					// UserCSSLoader.CHRMFOLDER verwenden
    					let CHRMfolderPath = this.prefs.getCharPref("CHRMFOLDER");
    					cFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
    					cFolder.initWithPath(CHRMfolderPath);
    			} catch (e) {
    					cFolder = Services.dirsvc.get("UChrm", Ci.nsIFile);
    			}
    			if (!cFolder.exists() || !cFolder.isDirectory()) {
    					cFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0o664);
    			}
    			delete this.CHRMFOLDER;
    			return this.CHRMFOLDER = cFolder;
    	},
    
    	init: function() {
    		const cssmenu = $C("menu", {
    			id: "usercssloader-menu",
    			label: "CSS",
    			tooltiptext: "UserCSSLoader\n\nLinksklick: Stylesheets anzeigen\nMittelklick: Styles importieren",
    			accesskey: "Y"
    		});
    		cssmenu.addEventListener("click", (event) => { if (event.button === 1) UCL.rebuild(); });
    		const menupopup = $C("menupopup", {
    			id: "usercssloader-menupopup"
    		});
    		cssmenu.appendChild(menupopup);
    
    		let menu = $C("menu", {
    			label: "Style-Loader-Menü",
    			id: "style-loader-menu",
    			accesskey: "S",
    			//acceltext: "S"
    		});
    		menupopup.appendChild(menu);
    		menupopup.appendChild($C("menuseparator"));
    
    		let mp = $C("menupopup", { id: "usercssloader-submenupopup" });
    		menu.appendChild(mp);
    		let rebuildItem = $C("menuitem", {
    			label: "Styles importieren",
    			accesskey: "I",
    			//acceltext: "I"
    		});
    		rebuildItem.addEventListener("command", () => UCL.rebuild());
    		mp.appendChild(rebuildItem);
    		mp.appendChild($C("menuseparator"));
    		//
    		let createCSS = $C("menuitem", {
    			label: "CSS-Datei erstellen",
    			accesskey: "D",
    			//acceltext: "D"
    		});
    		createCSS.addEventListener("command", () => UCL.create());
    		mp.appendChild(createCSS);
    		let openFolder = $C("menuitem", {
    			label: "CSS-Ordner öffnen",
    			accesskey: "O",
    			//acceltext: "O"
    		});
    		openFolder.addEventListener("command", () => UCL.openCSSFolder());
    		mp.appendChild(openFolder);
    		if (showChrome) {
    				let openChromeFolder = $C("menuitem", {
    					label: "Chrome-Ordner öffnen",
    					accesskey: "X",
    					//acceltext: "X"
    				});
    				openChromeFolder.addEventListener("command", () => UCL.openCHRMFolder());
    				mp.appendChild(openChromeFolder);
    		}
    		if (showUserChromeCSS || showUserContentCSS)// wenigstens eine der beiden Variablen muss …
    				mp.appendChild($C('menuseparator'));// … true sein, damit Trennlinie angezeigt wird
    		if (showUserChromeCSS) {
    				let editChromeItem = $C("menuitem", {
    					label: "userChrome.css bearbeiten"
    				});
    				editChromeItem.addEventListener("command", () => UCL.editUserCSS("userChrome.css"));
    				mp.appendChild(editChromeItem);
    		}
    		if (showUserContentCSS) {
    				let editContentItem = $C("menuitem", {
    					label: "userContent.css bearbeiten"
    				});
    				editContentItem.addEventListener("command", () => UCL.editUserCSS("userContent.css"));
    				mp.appendChild(editContentItem);
    		}
    
    		CustomizableUI.createWidget({
    			id: 'usercssloader-menu-item',
    			type: 'custom',
    			defaultArea: CustomizableUI.AREA_NAVBAR,
    			onBuild: function(aDocument) {
    				let toolbaritem = aDocument.createXULElement('toolbaritem');
    				toolbaritem.id = 'usercssloader-menu-item';
    				toolbaritem.className = 'chromeclass-toolbar-additional';
    				return toolbaritem;
    			}
    		});
    		$('usercssloader-menu-item').appendChild(cssmenu);
    
    		if (position === 1) {
    				let refNode = $('helpMenu');
    				refNode.parentNode.insertBefore(cssmenu, refNode.nextSibling);
    		}
    
    		// Stile neu laden, ohne Menü zu öffnen
    		let key = $C("key", {
    			id: "usercssloader-rebuild-key",
    			key: "R",
    			modifiers: "alt",
    		});
    		key.addEventListener("command", () => UCL.rebuild());
    		$("mainKeyset").appendChild(key);
    
    		this.rebuild();
    		this.initialized = true;
    		window.addEventListener("unload", this, false);
    	},
    	uninit: function() {
    		const dis = [];
    		for (let x of Object.keys(this.readCSS)) {
    			if (!this.readCSS[x].enabled)
    				dis.push(x);
    		}
    		this.prefs.setCharPref("disabled_list", encodeURIComponent(dis.join("|")));
    		window.removeEventListener("unload", this, false);
    	},
    	destroy: function() {
    		var i = document.getElementById("usercssloader-menu");
    		if (i) i.parentNode.removeChild(i);
    		var i = document.getElementById("usercssloader-rebuild-key");
    		if (i) i.parentNode.removeChild(i);
    		this.uninit();
    	},
    	handleEvent: function(event) {
    		switch(event.type){
    			case "unload": this.uninit(); break;
    		}
    	},
    	rebuild: function() {
    		let ext = /\.css$/i;
    		let not = /\.uc\.css/i;
    		let files = this.FOLDER.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
    
    		while (files.hasMoreElements()) {
    			let file = files.getNext().QueryInterface(Ci.nsIFile);
    			if (!ext.test(file.leafName) || not.test(file.leafName)) continue;
    			let CSS = this.loadCSS(file);
    			CSS.flag = true;
    		}
    		for (let leafName of Object.keys(this.readCSS)) {
    			const CSS = this.readCSS[leafName];
    			if (!CSS.flag) {
    				CSS.enabled = false;
    				delete this.readCSS[leafName];
    			}
    			delete CSS.flag;
    			this.rebuildMenu(leafName);
    		}
    		if (this.initialized) {
    			if (typeof(StatusPanel) !== "undefined")
    				StatusPanel._label = "Styles importiert";
    			else
    				XULBrowserWindow.statusTextField.label = "Styles importiert";
    		}
    	},
    	loadCSS: function(aFile) {
    		let CSS = this.readCSS[aFile.leafName];
    		if (!CSS) {
    			CSS = this.readCSS[aFile.leafName] = new CSSEntry(aFile);
    			if (this.disabled_list.indexOf(CSS.leafName) === -1) {
    				CSS.enabled = true;
    			}
    		} else if (CSS.enabled) {
    			CSS.enabled = true;
    		}
    		return CSS;
    	},
    	rebuildMenu: function(aLeafName) {
    		let CSS = this.readCSS[aLeafName];
    		let menuitem = document.getElementById("usercssloader-" + aLeafName);
    		if (!CSS) {
    			if (menuitem)
    				menuitem.parentNode.removeChild(menuitem);
    			return;
    		}
    
    		if (!menuitem) {
    			menuitem = $C("menuitem", {
    				label: aLeafName,
    				id: "usercssloader-" + aLeafName,
    				class: "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : CSS.SHEET == this.AUTHOR_SHEET? "AUTHOR_SHEET": "USER_SHEET"),
    				type: "checkbox",
    				autocheck: "false",
    				tooltiptext: menutooltip
    			});
    			menuitem.addEventListener("command", () => UCL.toggle(aLeafName));
    			menuitem.addEventListener("click", (event) => UCL.itemClick(event));
    			menuitem.addEventListener("mouseup", (event) => { if (event.button === 1) event.preventDefault(); });
    			document.getElementById("usercssloader-menupopup").appendChild(menuitem);
    		}
    		menuitem.setAttribute("checked", CSS.enabled);
    	},
    	toggle: function(aLeafName) {
    		let CSS = this.readCSS[aLeafName];
    		if (!CSS || event.ctrlKey) return;
    		CSS.enabled = !CSS.enabled;
    		this.rebuildMenu(aLeafName);
    	},
    	itemClick: function(event) {
    		let label = event.currentTarget.getAttribute("label");
    		event.preventDefault();
    		event.stopPropagation();
    		if (event.button === 0) {
    				return;
    		} else if (event.button === 1) {
    				this.toggle(label);
    		} else if (event.button === 2) {
    				if (event.ctrlKey) {
    						UCL.showFile(label);
    				} else {
    				closeMenus(event.target);
    				this.edit(this.getFileFromLeafName(label));
    				}
    		}
    	},
    	getFileFromLeafName: function(aLeafName) {
    		let f = this.FOLDER.clone();
    		f.QueryInterface(Ci.nsIFile); // use appendRelativePath
    		f.appendRelativePath(aLeafName);
    		return f;
    	},
    	showFile: function(fname) {
    		if (fileManager !== "") {
    				const PathSep = AppConstants.platform === "win" ? "\\" : "/";
    				let target= this.FOLDER.path + PathSep + fname;
    				let file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
    				let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
    				let args = (!fileManagerParamPost) ? [fileManagerParam,target] :
    				           [target,fileManagerParam];
    				file.initWithPath(fileManager);
    				process.init(file);
    				// Verzeichnis mit anderem Dateimanager öffnen
    				process.run(false, args, args.length);
    		} else {
    				// Verzeichnis mit Dateimanager des Systems öffnen
    				this.FOLDER.launch();
    		}
    	},
    	openCSSFolder:function(){
    		if (fileManager !== "") {
    				let target = this.FOLDER.path;
    				let file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
    				let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
    				let args = (!fileManagerParamPost) ? [fileManagerParam,target,] :
    				           [target,fileManagerParam];
    				file.initWithPath(fileManager);
    				process.init(file);
    				// Verzeichnis mit anderem Dateimanager öffnen
    				process.run(false, args, args.length);
    		} else {
    				// Verzeichnis mit Dateimanager des Systems öffnen
    				this.FOLDER.launch();
    		}
    	},
    	openCHRMFolder:function(){
    		if (fileManager !== "") {
    				let target = this.CHRMFOLDER.path;
    				let file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
    				let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
    				let args = (!fileManagerParamPost) ? [fileManagerParam,target,] :
    				           [target,fileManagerParam];
    				file.initWithPath(fileManager);
    				process.init(file);
    				// Verzeichnis mit anderem Dateimanager öffnen
    				process.run(false, args, args.length);
    		} else {
    				// Verzeichnis mit Dateimanager des Systems öffnen
    				this.CHRMFOLDER.launch();
    		}
    	},
    	editUserCSS: function(aLeafName) {
    		let file = Services.dirsvc.get("UChrm", Ci.nsIFile);
    		file.appendRelativePath(aLeafName);
    		this.edit(file);
    	},
    	edit: function(aFile) {
    		let editor = (customEditor !== "") ? customEditor : Services.prefs.getCharPref("view_source.editor.path");
    		if (!editor) return alert('In der Konfiguration einen Texteditor festlegen ("customEditor") oder\n unter about:config im vorhandenen Schalter "view_source.editor.path"\n den vollständigen Editorpfad eintragen.');
    		try {
    			let UI = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
    			UI.charset = window.navigator.platform.toLowerCase().indexOf("win") >= 0? "Shift_JIS": "UTF-8";
    			let path = UI.ConvertFromUnicode(aFile.path);
    			let app = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
    			app.initWithPath(editor);
    			let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
    			process.init(app);
    			process.run(false, [path], 1);
    		} catch (e) {}
    	},
    	create: function(aLeafName) {
    		if (!aLeafName) aLeafName = prompt("Name des Styles", dateFormat(new Date(), "%Y_%m%d_%H%M%S"));
    		if (aLeafName) aLeafName = aLeafName.replace(/\s+/g, " ").replace(/[\\/:*?\"<>|]/g, "");
    		if (!aLeafName || !/\S/.test(aLeafName)) return;
    		if (!/\.css$/.test(aLeafName)) aLeafName += ".css";
    		let file = this.getFileFromLeafName(aLeafName);
    		this.edit(file);
    	},
    	UCrebuild: function() {
    		let re = /^file:.*\.uc\.css(?:\?\d+)?$/i;
    		let query = "?" + new Date().getTime();
    		Array.slice(document.styleSheets).forEach(function(css){
    			if (!re.test(css.href)) return;
    			if (css.ownerNode) {
    				css.ownerNode.parentNode.removeChild(css.ownerNode);
    			}
    			let pi = document.createProcessingInstruction('xml-stylesheet','type="text/css" href="'+ css.href.replace(/\?.*/, '') + query +'"');
    			document.insertBefore(pi, document.documentElement);
    		});
    		UCL.UCcreateMenuitem();
    	},
    	UCcreateMenuitem: function() {
    		let sep = $("usercssloader-ucseparator");
    		let popup = sep.parentNode;
    		if (sep.nextSibling) {
    			let range = document.createRange();
    			range.setStartAfter(sep);
    			range.setEndAfter(popup.lastChild);
    			range.deleteContents();
    			range.detach();
    		}
    
    		let re = /^file:.*\.uc\.css(?:\?\d+)?$/i;
    		Array.slice(document.styleSheets).forEach(function(css) {
    			if (!re.test(css.href)) return;
    			let fileURL = decodeURIComponent(css.href).split("?")[0];
    			let aLeafName = fileURL.split("/").pop();
    			let m = $C("menuitem", {
    				label: aLeafName,
    				tooltiptext: fileURL,
    				id: "usercssloader-" + aLeafName,
    				type: "checkbox",
    				autocheck: "false",
    				checked: "true",
    			});
    			m.css = css;
    			m.addEventListener("command", function() {
    				if (!event.ctrlKey) {this.setAttribute("checked", !(this.css.disabled = !this.css.disabled));}
    			});
    			m.addEventListener("mouseup", function(event) {
    				if (event.button === 1) event.preventDefault();
    			});
    			m.addEventListener("click", function(event) {
    				UCL.UCItemClick(event);
    			});
    			popup.appendChild(m);
    		});
    	},
    	UCItemClick: function(event) {
    		if (event.button === 0) return;
    		event.preventDefault();
    		event.stopPropagation();
    
    		if (event.button === 1) {
    			event.target.doCommand();
    		}
    		else if (event.button === 2) {
    			closeMenus(event.target);
    			let fileURL = event.currentTarget.getAttribute("tooltiptext");
    			let file = Services.io.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler).getFileFromURLSpec(fileURL);
    			this.edit(file);
    		}
    	},
    };
    
    function CSSEntry(aFile) {
    	this.path = aFile.path;
    	this.leafName = aFile.leafName;
    	this.lastModifiedTime = 1;
    	this.SHEET = /^xul-|\.as\.css$/i.test(this.leafName) ?
    		Ci.nsIStyleSheetService.AGENT_SHEET:
    		/\.author\.css$/i.test(this.leafName)?
    			Ci.nsIStyleSheetService.AUTHOR_SHEET:
    			Ci.nsIStyleSheetService.USER_SHEET;
    }
    CSSEntry.prototype = {
    	sss: Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService),
    	_enabled: false,
    	get enabled() {
    		return this._enabled;
    	},
    	set enabled(isEnable) {
    		let aFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile)
    		aFile.initWithPath(this.path);
    
    		let isExists = aFile.exists(); // true, wenn die Datei bereits existiert
    		let lastModifiedTime = isExists ? aFile.lastModifiedTime : 0;
    		let isForced = this.lastModifiedTime != lastModifiedTime; //true, wenn es eine Änderung in der Datei gibt
    
    		let fileURL = Services.io.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler).getURLSpecFromActualFile(aFile);
    		let uri = Services.io.newURI(fileURL, null, null);
    
    		if (this.sss.sheetRegistered(uri, this.SHEET)) {
    			// Wenn diese Datei bereits gelesen wurde
    			if (!isEnable || !isExists) {
    				this.sss.unregisterSheet(uri, this.SHEET);
    			}
    			else if (isForced) {
    				// Nach Stornierung erneut einlesen
    				this.sss.unregisterSheet(uri, this.SHEET);
    				this.sss.loadAndRegisterSheet(uri, this.SHEET);
    			}
    		} else {
    			// Datei wurde nicht gelesen
    			if (isEnable && isExists) {
    				this.sss.loadAndRegisterSheet(uri, this.SHEET);
    			}
    		}
    		if (this.lastModifiedTime !== 1 && isEnable && isForced) {
    			log(this.leafName + " wurde aktualisiert");
    		}
    		this.lastModifiedTime = lastModifiedTime;
    		return this._enabled = isEnable;
    	},
    };
    
    UCL.init();
    
    function $(id) { return document.getElementById(id); }
    function $A(arr) { return Array.slice(arr); }
    function $C(name, attr) {
    	const el = document.createXULElement(name);
    	if (attr) Object.keys(attr).forEach(function(n) { el.setAttribute(n, attr[n]) });
    	return el;
    }
    function dateFormat(date, format) {
    	format = format.replace("%Y", ("000" + date.getFullYear()).substr(-4));
    	format = format.replace("%m", ("0" + (date.getMonth()+1)).substr(-2));
    	format = format.replace("%d", ("0" + date.getDate()).substr(-2));
    	format = format.replace("%H", ("0" + date.getHours()).substr(-2));
    	format = format.replace("%M", ("0" + date.getMinutes()).substr(-2));
    	format = format.replace("%S", ("0" + date.getSeconds()).substr(-2));
    	return format;
    }
    
    function log(mes) { console.log(mes); }
    })();
    Alles anzeigen
  • In memoriam

    • Boersenfeger
    • 17. Februar 2026 um 14:27

    Billy Steinberg Schöpfer von vielen Popsongs ist im Alter von 74 Jahren gestorben.

    Auszug:
    Like a Virgin Madonna
    True Colors Cindy Lauper
    Eternal Flame Bangles
    So emotional Whitney Houston

    RIP auch wg Jesse Jackson :(

  • Firefox 147.0.4 ist raus

    • Boersenfeger
    • 16. Februar 2026 um 16:32

    Neue Version 147.0.4 ist verfügbar.

  • Frage zu Downloadhelper

    • Boersenfeger
    • 14. Februar 2026 um 16:58

    Vielleicht wird das irgendwo anders gespeichert? Welcher ist denn dein Downloadordner für sonstige Downloads?

  • Wetterfuchsbutton Script für userChrome.js

    • Boersenfeger
    • 14. Februar 2026 um 10:48

    Mira_Belle + Endor

    Vielen lieben Dank! Hier ist jetzt auch wieder alles hübsch. Jetzt muss nur noch das Wetter gut werden... :P

Unterstütze uns!

Jährlich (2026)

34 %

34% (263,24 von 775 EUR)

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