1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Mira_Belle

Beiträge von Mira_Belle

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 16. September 2023 um 15:33
    Zitat von Mitleser

    Ein Extra-Button mit dieser Funktion würde für mich eher nicht in Frage kommen, u. U. schon ein hover auf die js-Uhr die einige (auch ich) in einer Leiste haben.

    Das passt nur bedingt zum Thema, deshalb:

    Spoiler anzeigen

    Es gibt ja verschiedene Uhren-Scripte, hier mal 'meins' mit Modal-Dialog:

    JavaScript
    (function() {
    
        if (!window.gBrowser){ return; }
       
        function doDatClock() {
            let date = new Date();
            var days = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'];
            var day = days[date.getDay()];
            let timestr = day + ' - ' + date.toLocaleDateString(locale, { day: '2-digit', month: '2-digit', year: '2-digit'}) +' - ' + date.toLocaleTimeString(locale, { hour: '2-digit', minute: '2-digit'});
    
            if( count == 1 ) {
                var counter = new Date( 2000 * sec ).toISOString().substr( 11 , 8 ); // .replace(/^[0:]+/, '') // if you want to replace zeroes and colons
                timestr = counter + ' 🕛️ ' + timestr ;
                sec++;
            }
            ClockLabel.setAttribute( 'value', timestr );
        }
        var count = 1; // if you don't want a counter set this to zero
        var agent = 0; // if you just want the clock set this to zero
        var language = 'de-DE'; // locale, e.g. 'de-DE' , 'en-US' , 'fr-FR'
        var personalText = ' - Design\u00A9\u00A9'; // your personal text here
        var cssFontFamily = '';
        var cssColor = 'lightgray'; // Font Color
    
        var css = 'padding-top: 2px; padding-left: 0; padding-right: 0; margin-right: 6px; color: ' + cssColor + '; font-family: ' + cssFontFamily + '; font-weight:normal; font-size:13px; text-shadow: none; width: 190px;';
        var cssA = 'width: auto;';
        var sec = 0;
        var locale = language || window.navigator.languages[0];
        var position = document.getElementById('PlacesChevron');
        var ClockLabel = document.createXULElement('label');
        ClockLabel.setAttribute('id', 'statusbar-clock-display-1');
        ClockLabel.setAttribute('class', 'statusbarpanel_c-text-1');
        ClockLabel.setAttribute('style', css);    
        position.parentNode.insertBefore(ClockLabel, position.nextSibling);
    
        if( agent == 1 ) {
            var AgentLabel = document.createXULElement('label');
            AgentLabel.setAttribute('id', 'statusbar-agent-display-1');
            AgentLabel.setAttribute('class', 'statusbarpanel_a-text-1');
            AgentLabel.setAttribute('style', css + cssA);
            var FFstr = window.navigator.userAgent.split(' ');
            var FF = FFstr[FFstr.length-1].replace( '/' , ' ' );
    //     var text = 'Firefox ' + gAppInfo.version + personalText;
    //     Cc['@mozilla.org/xre/app-info;1'].getService(Ci.nsIXULAppInfo).QueryInterface(Ci.nsIXULRuntime);
            
            var text = 'FF ' + AppConstants.MOZ_APP_VERSION_DISPLAY + personalText;
            
    
            AgentLabel.setAttribute( 'value', text );
            position.parentNode.insertBefore(AgentLabel, position.nextSibling);
        }
        if( count == 1 ) {
            ClockLabel.addEventListener('click', function() { sec = 0; });
        }
     window.setInterval( doDatClock , 1000 );
    //-------------Modal-Dialog---------------------------------------
    ClockLabel.addEventListener('mouseover', function() {
                                         
         const lang = 'de-DE';               
         const t = new Date();
    
         const d10 = t.toLocaleDateString(lang,{timeZone:'Europe/Berlin',weekday:'long'})
         const d15 = t.toLocaleDateString(lang,{timeZone:'Europe/Lisbon',weekday:'long'})
         const d20 = t.toLocaleDateString(lang,{timeZone:'America/New_York',weekday:'long'})
         const d30 = t.toLocaleDateString(lang,{timeZone:'Europe/Moscow',weekday:'long'})
         const d40 = t.toLocaleDateString(lang,{timeZone:'Asia/Hong_Kong',weekday:'long'})
         const d50 = t.toLocaleDateString(lang,{timeZone:'Australia/Sydney',weekday:'long'})
       
         const h10 = t.toLocaleTimeString(lang,{timeZone:'Europe/Berlin',hour:'numeric',minute:'numeric',hour12:false})
         const h15 = t.toLocaleTimeString(lang,{timeZone:'Europe/Lisbon',hour:'numeric',minute:'numeric',hour12:false})
         const h20 = t.toLocaleTimeString(lang,{timeZone:'America/New_York',hour:'numeric',minute:'numeric',hour12:false})
         const h30 = t.toLocaleTimeString(lang,{timeZone:'Europe/Moscow',hour:'numeric',minute:'numeric',hour12:false})
         const h40 = t.toLocaleTimeString(lang,{timeZone:'Asia/Hong_Kong',hour:'numeric',minute:'numeric',hour12:false})
         const h50 = t.toLocaleTimeString(lang,{timeZone:'Australia/Sydney',hour:'numeric',minute:'numeric',hour12:false})
       
         const m10 = t.toLocaleDateString(lang,{timeZone:'Europe/Berlin',day: '2-digit', month: 'long'})
         const m15 = t.toLocaleDateString(lang,{timeZone:'Europe/Lisbon',day: '2-digit', month: 'long'})
         const m20 = t.toLocaleDateString(lang,{timeZone:'America/New_York',day: '2-digit', month: 'long'})
         const m30 = t.toLocaleDateString(lang,{timeZone:'Europe/Moscow',day: '2-digit', month: 'long'})
         const m40 = t.toLocaleDateString(lang,{timeZone:'Asia/Hong_Kong',day: '2-digit', month: 'long'})
         const m50 = t.toLocaleDateString(lang,{timeZone:'Australia/Sydney',day: '2-digit', month: 'long'})
    
         const y10 = t.toLocaleDateString(lang,{timeZone:'Europe/Berlin',year: 'numeric'})
         const y15 = t.toLocaleDateString(lang,{timeZone:'Europe/Lisbon',year: 'numeric'})
         const y20 = t.toLocaleDateString(lang,{timeZone:'America/New_York',year: 'numeric'})
         const y30 = t.toLocaleDateString(lang,{timeZone:'Europe/Moscow',year: 'numeric'})
         const y40 = t.toLocaleDateString(lang,{timeZone:'Asia/Hong_Kong',year: 'numeric'})
         const y50 = t.toLocaleDateString(lang,{timeZone:'Australia/Sydney',year: 'numeric'})
    
         const body = document.querySelector('body');
         const dialog = document.createElement('dialog');
    
               dialog.setAttribute('id', 'time-dialog');
               dialog.innerHTML = `
      <table>
        <tr><strong>Internationale Uhrzeiten</strong></tr>
      </table>
      <table>
        <tr>
            <td>Berlin:</td>
            <td>${h10}</td>
            <td>Uhr - </td>
            <td>${d10},</td>
            <td>${m10}</td>
            <td>${y10}</td>
        </tr>
        <tr>
            <td>Lagos(Pt):</td>
            <td>${h15}</td>
            <td>Uhr - </td>
            <td>${d15},</td>
            <td>${m15}</td>
            <td>${y15}</td>
        </tr>
        <tr>
            <td>New York:</td>
            <td>${h20}</td>
            <td>Uhr - </td>
            <td>${d20},</td>
            <td>${m20}</td>
            <td>${y20}</td>
        </tr>
        <tr>
            <td>Moskau:</td>
            <td>${h30}</td>
            <td>Uhr - </td>
            <td>${d30},</td>
            <td>${m30}</td>
            <td>${y30}</td>
        </tr>
        <tr>
            <td>Hongkong:</td>
            <td>${h40}</td>
            <td>Uhr - </td>
            <td>${d40},</td>
            <td>${m40}</td>
            <td>${y40}</td>
        </tr>
        <tr>
            <td>Sydney:</td>
            <td>${h50}</td>
            <td>Uhr - </td>
            <td>${d50},</td>
            <td>${m50}</td>
            <td>${y50}</td>
        </tr>
      </table>
    `;
    setTimeout(function() {
          dialog.close();
      },1000);
    body.appendChild(dialog);
    dialog.showModal();
    
       let sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService);   
       let uri = Services.io.newURI('data:text/css;charset=utf-8,' + encodeURIComponent(`
            #time-dialog {
                max-width: auto;
                max-height: auto;
                border: 1px solid orange;
                border-radius: 4px;
            }
          `), null, null);
       sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
     })
    //-------------Modal-Dialog---------------------------------------
    })();
    Alles anzeigen

    Da ist sicherlich noch viel redundant, gerade im Bereich der Variablen.

    Danke für das fertige JavaScript.

    Genau so sollte die Funktion werden.

    Werde mir das mal ganz genau anschauen.

    Damit ist dieser Thread am Ende.

    Eventuell spiele ich noch etwas mit Sörens Codschnipsel herum, mal seh'n.

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 15. September 2023 um 10:44

    Sören Hentzschel

    Vielen lieben Dank.

    Nun kann ich erstens meine Gedanken wieder ordnen, mir in aller Ruhe die Codeschnipsel anschauen

    und dann anfangen herumzuexperimentieren, in der Hoffnung, dass ich es doch noch irgendwie gebacken bekomme!

    Ein Gedanke zum Schließen.

    Lässt sich die "Aktion" per "Zeitschleife" automatisieren?

    Also mit z.B.

    JavaScript
    setTimeout(function() {
          dialog.close();
      },250);

    :?:

    Ist nur gerade so eine spontane "Eingebung".

    Nächste Woche habe ich viel Zeit und dann werde ich einen neuen Anlauf wagen.

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 15. September 2023 um 00:57

    Hab es nun hinbekommen.

    Es ist der Code 2!

    Jedoch funktioniert window.open nicht, sondern ich muss window.alert nehmen.

    Das ist blöd, denn damit das Fenster wieder schließt, muss entweder auf den OK Button geklickt werden

    oder eben auf das rote X in der rechten Ecke oben.

    Was auch irgendwie doof ist, der Button zur Anzeige von Datum und Uhrzeit muss erst einmal betätigt worden sein,

    sonst funktioniert es auch nicht.

    Hier mal meinen Erguss.

    JavaScript
    (function() {
    
       if (location.href !== 'chrome://browser/content/browser.xhtml') return; 
       try {
          CustomizableUI.createWidget({
             id: 'time-button',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {         
                let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
    //            toolbaritem.onclick = event => onClick(event); // Fallback für Dharkness ;)
                var props = {
                   id: 'time-button',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'Internationale Uhrzeiten',
                   accesskey: '', // Wer möchte kann hier z.B. 'C' eintragen, dann kann per "Alt + C" das Skript ausgeführt werden
                   tooltiptext: 'Internationale Uhrzeiten anzeigen',
                };            
                for (var p in props)
                   toolbaritem.setAttribute(p, props[p]);            
    
                // Hinzufügen des Klick-Event-Handlers für das Popup
                toolbaritem.onclick = function (event) {
                   if (event.button === 0) {
    //-----------------------------------------------------------
                      let popupArea = document.getElementById("time-button");
    
                      popupArea.addEventListener("mouseover", function() {
    
                         let language = 'de-DE';
    
                         let = d10 = t.toLocaleDateString( 'de-DE', { timeZone: 'Europe/Berlin',weekday: "long"} )
                         let = d20 = t.toLocaleDateString(`${language}`,{timeZone:'America/New_York',weekday: "long"} )
                         let = d30 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Moscow',weekday: "long"} )
                         let = d40 = t.toLocaleDateString(`${language}`,{timeZone:'Asia/Hong_Kong',weekday: "long"} )
                         let = d50 = t.toLocaleDateString(`${language}`,{timeZone:'Australia/Sydney',weekday: "long"} )
       
                         let = h10 = t.toLocaleTimeString(`${language}`,{timeZone:'Europe/Berlin',hour:'numeric',minute:'numeric',hour12:false})
                         let = h20 = t.toLocaleTimeString(`${language}`,{timeZone:'America/New_York',hour:'numeric',minute:'numeric',hour12:false})
                         let = h30 = t.toLocaleTimeString(`${language}`,{timeZone:'Europe/Moscow',hour:'numeric',minute:'numeric',hour12:false})
                         let = h40 = t.toLocaleTimeString(`${language}`,{timeZone:'Asia/Hong_Kong',hour:'numeric',minute:'numeric',hour12:false})
                         let = h50 = t.toLocaleTimeString(`${language}`,{timeZone:'Australia/Sydney',hour:'numeric',minute:'numeric',hour12:false})
       
                         let = x10 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Berlin',day: "numeric", month: "2-digit", year: "numeric"})
                         let = x20 = t.toLocaleDateString(`${language}`,{timeZone:'America/New_York',day: "numeric", month: "2-digit", year: "numeric"})
                         let = x30 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Moscow',day: "numeric", month: "2-digit", year: "numeric"})
                         let = x40 = t.toLocaleDateString(`${language}`,{timeZone:'Asia/Hong_Kong',day: "numeric", month: "2-digit", year: "numeric"})
                         let = x50 = t.toLocaleDateString(`${language}`,{timeZone:'Australia/Sydney',day: "numeric", month: "2-digit", year: "numeric"})
    
    
    
                      window.alert(`
                   Es ist ${d10}. der ${x10} - es ist ${h10} Uhr in Berlin\n
                   Es ist ${d20}. der ${x20} - es ist ${h20} Uhr in New York\n
                   Es ist ${d30}. der ${x30} - es ist ${h30} Uhr in Moskau
                   Es ist ${d40}. der ${x40} - es ist ${h40} Uhr in Hong Kong              \xa0
                   Es ist ${d50}. der ${x50} - es ist ${h50} Uhr in Sydney`, 
                      "Popup", "width=200,height=100");
    
                      });
    //--------------------------------------------------------
                      let t = new Date()
                      let language = 'de-DE';
    
                      let = d10 = t.toLocaleDateString( 'de-DE', { timeZone: 'Europe/Berlin',weekday: "long"} )
                      let = d20 = t.toLocaleDateString(`${language}`,{timeZone:'America/New_York',weekday: "long"} )
                      let = d30 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Moscow',weekday: "long"} )
                      let = d40 = t.toLocaleDateString(`${language}`,{timeZone:'Asia/Hong_Kong',weekday: "long"} )
                      let = d50 = t.toLocaleDateString(`${language}`,{timeZone:'Australia/Sydney',weekday: "long"} )
    
                      let = h10 = t.toLocaleTimeString(`${language}`,{timeZone:'Europe/Berlin',hour:'numeric',minute:'numeric',hour12:false})
                      let = h20 = t.toLocaleTimeString(`${language}`,{timeZone:'America/New_York',hour:'numeric',minute:'numeric',hour12:false})
                      let = h30 = t.toLocaleTimeString(`${language}`,{timeZone:'Europe/Moscow',hour:'numeric',minute:'numeric',hour12:false})
                      let = h40 = t.toLocaleTimeString(`${language}`,{timeZone:'Asia/Hong_Kong',hour:'numeric',minute:'numeric',hour12:false})
                      let = h50 = t.toLocaleTimeString(`${language}`,{timeZone:'Australia/Sydney',hour:'numeric',minute:'numeric',hour12:false})
    
                      let = x10 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Berlin',day: "numeric", month: "2-digit", year: "numeric"})
                      let = x20 = t.toLocaleDateString(`${language}`,{timeZone:'America/New_York',day: "numeric", month: "2-digit", year: "numeric"})
                      let = x30 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Moscow',day: "numeric", month: "2-digit", year: "numeric"})
                      let = x40 = t.toLocaleDateString(`${language}`,{timeZone:'Asia/Hong_Kong',day: "numeric", month: "2-digit", year: "numeric"})
                      let = x50 = t.toLocaleDateString(`${language}`,{timeZone:'Australia/Sydney',day: "numeric", month: "2-digit", year: "numeric"})
    
                      alert (`
                      Es ist ${d10}. der ${x10} - es ist ${h10} Uhr in Berlin\n
                      Es ist ${d20}. der ${x20} - es ist ${h20} Uhr in New York\n
                      Es ist ${d30}. der ${x30} - es ist ${h30} Uhr in Moskau
                      Es ist ${d40}. der ${x40} - es ist ${h40} Uhr in Hong Kong              \xa0
                      Es ist ${d50}. der ${x50} - es ist ${h50} Uhr in Sydney 
    
                      `);
                   }
                };
                return toolbaritem;
    
    
    
                
             }    
          });
       } catch(e) { };
       
       let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner
       let ButtonIcon = "clock.svg"; // Name & Dateiendung des anzuzeigenden Symbols!
       let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
       let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    
          #time-button { list-style-image: url("${ProfilePath}/${ButtonIcon}") }
          #time-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon {
             width: 32px !important;
             height: 32px !important;
             fill: lime !important;
             fill-opacity: 1 !important;
          }
    
          #time-button:hover .toolbarbutton-icon {
                fill: var(--uc-color-lightgray-icons) !important; 
                fill-opacity: 1 !important;    
    }
          `), null, null);
    
       sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
    })();   
    Alles anzeigen

    Bin heute nicht so gut drauf und es macht überhaupt keinen Spaß.

    Schade.

    Werde es doch noch einmal mit Sörens Code versuchen.

    Wenn ich den so lese, wird es für mich einige Hürden geben.

    JavaScript
    const body = document.querySelector('body');
    const dialog = document.createElement('dialog');
    const btn = document.createElement('button');
    
    dialog.style.backgroundColor = '#0f0';            // #00ff00 Color Hex Green1
    dialog.style.borderColor = '#f00';                // #ff0000 Color Hex Red1
    dialog.appendChild(btn);
    
    btn.textContent = 'close';
    btn.style.backgroundColor = '#ff0';               // #ffff00 Color Hex Yellow1
    
    btn.addEventListener('click', () => {
      dialog.close();
    });
    
    body.appendChild(dialog);
    
    dialog.showModal();
    Alles anzeigen

    Wie beeinflusse ich die Höhe und die Breite?

    Wie kann ich die Ecken abrunden?

    Und wie das "Fenster" mit Inhalt befüllen?

    Und bekomme ich es hin, dass sich dieses Fenster auch wieder von alleine schließt?

    Eine Denksportaufgabe für schlechtes Wetter.

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 15. September 2023 um 00:05

    Halbe Miete habe ich!

    Beim Hovern über den "time-button" erscheint nun ein Fenster!

    Nun muss ich es noch schaffen, dass da auch was angezeigt wird.

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 14. September 2023 um 22:59

    BrokenHeart

    Habe ich ausprobiert!

    Und ja, da legt sich über die Seite so ein "Schleier" in dessen Mitte dieses "Gelb-Grüne-Ding, mit rotem Rand.

    Nur das ist immer nach einem Neustart des Firefox da, und nicht nur, wenn ich über ein bestimmtes Areal hovere!

    Auch verschwindet es, wenn ich draufklicke und kommt nicht wieder, wenn ich über das bestimmte Areal hovere!

    Du hast es in einem Skript "eingebaut"?

    Zeig mir doch bitte wie.


    Zitat von Mitleser

    z.B. so ähnlich:

    ...

    ist nur als Bastelvorlage gedacht

    Habe ich gemacht!Wenn man nun noch

    alert(

       t10+' Berlin\n'

       +t15+' Lagos\n\n'

       +t20+' New York\n'

       +t30+' Moskau\n\n'

       +t40+' Hongkong\n'

       +t50+' Sydney')

    löscht erscheint nur noch das Demo.

    Nur so hatte ich es nicht gemeint :!:

    Hovere mal über den Button.

    Was erscheint da?

    So ein kleines Hinweisfenster!

    Und was steht da bei Deinem Skript drinen?

    Internationale Uhrzeiten anzeigen

    Und was hätte ich gerne umgesetzt?

    Dass da drinnen seht

    Vielleicht habe ich mich nicht richtig ausgedrückt, aber nun sollte es klar sein!

    Leider komme ich auch nicht mit diesen beiden Codeschnipsel weiter.

    1.

    JavaScript
          const element = document.getElementById('time-button');
          
          element.addEventListener('mouseover', () => {
              // Zeige das Menü an, z.B. durch Ändern von display oder visibility
              element.style.display = 'block';
          });
          
          element.addEventListener('mouseout', () => {
              // Verberge das Menü, wenn der Mauszeiger das Element verlässt
          //    element.style.display = 'none';
              element.style.display = 'block';          
          });
    Alles anzeigen

    Eventuell an falscher Stelle eingefügt. :/

    und

    2.

    JavaScript
          const popupArea = document.getElementById("time-button");
    
          popupArea.addEventListener("mouseover", function() {
              const popupWindow = window.open("", "Popup", "width=200,height=100");
              const currentDate = new Date();
              const popupContent = `Datum: ${currentDate.toLocaleDateString()} Uhrzeit: ${currentDate.toLocaleTimeString()}`;
              popupWindow.document.write(popupContent);
          });

    Wahrscheinlich das Gleiche.

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 14. September 2023 um 22:50
    Zitat von BrokenHeart

    Den Dialog-Code hat Sören doch hier gepostet (und in der Konsole ausprobiert):

    Beitrag

    RE: Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    […]

    Funktioniert das im Script nicht? Da ich keine Scripts nutze, kann ich es nicht testen. Über die Konsole funktioniert das zumindest, das wird im DOM des Browsers eingefügt.

    (Quelltext, 18 Zeilen)

    Das sieht so nicht hübsch aus und macht nichts Sinnvolles, sondern soll nur die grundsätzliche Idee verständlich machen.



    […]

    Wir haben ja nicht wirklich fast 65.000 Mitglieder. Klar, so viele sind registriert, aber die meisten haben sich einmalig (oder auch ein paar Mal) wegen eines Problems…
    Sören Hentzschel
    14. September 2023 um 10:30

    und ich habe es dann in einem Skript getestet(siehe Edit in #25) und es läuft.

    Dürfte doch genau das sein, was du haben möchtest.. :/

    D.h. ich brauche einfach nur diesen Code irgendwo in das JavaScript reinhängen?

    Irgendwie stehe ich gerade völlig auf dem Schlauch!

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 14. September 2023 um 21:58

    ;(

    Nunja, ich finde, dieser Thread nimmt nun doch eine komische Wendung an.

    Es ist ja nicht falsch, was ihr schreibt, aber ich könnte wirklich etwas Hilfe gebrauchen.

    Bitte.

    Wie gestalte ich das Aussehen eines "Popups" per CSS, dass es so noch gar nicht gibt?

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 14. September 2023 um 13:38

    :/

    Ich brauche eine eindeutige ID für die von mir erwähnte Anzeige.

    In dem Skript ist ja gar keine!

    Dann müsste CSS-Code rein, der festlegt wie das Popup aussehen soll und das es anfänglich ausgeblendet sein soll.

    Das sollte irgendwie mit display: none; oder visibility: hidden; umzusetzen sein.

    Und in das Skript muss dann noch Code, um auf das Hover-Ereignis zuzugreifen und das Menü bei Bedarf anzuzeigen.

    Einen Codeschnipsel dafür habe ich im Netz gefunden!

    Könnte so aussehen:

    JavaScript
    const element = document.getElementById('your-element-id');
    
    element.addEventListener('mouseover', () => {
        // Zeige das Menü an, z.B. durch Ändern von display oder visibility
        element.style.display = 'block';
    });
    
    element.addEventListener('mouseout', () => {
        // Verberge das Menü, wenn der Mauszeiger das Element verlässt
        element.style.display = 'none';
    });
    Alles anzeigen

    Nur, wie setze ich das mit der ID um? :/

    HA!

    Habe mich geirrt, hat doch eine ID :!:

    #titlebar-clock-display

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 14. September 2023 um 13:04
    Zitat von 2002Andreas

    Daran ändert sich doch nichts, nur weil du die CSS Codes in Skripte packst :/

    Außerdem, Skripte nutzen zu können bedarf einer größeren Vorbereitung als CSS Codes zu nutzen.

    Und wenn ein Skript nicht funktioniert stellt sich die Frage, liegt es am Skript oder dem CSS Code darin.

    Ich nutze hier 62 CSS Dateien und 41 Skripte.

    Alle CSS Dateien haben einen Namen/Bezeichnung womit man/ich sofort erkennen kann, was damit verändert wurde.

    Für mich! gibt es also keinen Grund, meine CSS Codes extra noch in Skripte zu packen. ;)

    PS:

    Aber wie immer...jeder wie er mag :)

    Alles anzeigen

    Ich gebe Dir vollkommen recht, es liegt einzig und alleine an einer sinnvollen Aufteilung.

    Was aber JavaScript angeht, wenn es nicht funktioniert, liegt es fast immer nicht am

    eingebundenen CSS, zumal sich das ja auch ganz einfach testen lässt.

    Einfach rausnehmen oder deaktivieren.

    Und was die Vorbereitung angeht, ich finde, es ist auch nicht komplizierter als die Vorbereitung zur Benutzung von CSS.

    Ok, um JavaScript nutzen zu können, muss man diese Schritte ja auch machen und

    dann kommt das andere Gedöhns auch noch dazu.

    OK, der aufwand ist doch etwas mehr, geb' mich geschlagen, hast ja recht. :D


    Um nochmals auf das Thema zu kommen, ich habe ja das JavaScript für Datums- & Zeitanzeige am Laufen.

    Richtig toll fände ich es, wenn beim "hovern" sich dann ein "tooltip" öffnen täte, wo diverse Uhrzeiten

    anderer zuvor ausgewählter Orte anderer Zeitzonen angezeigt werden würden.

    Ob mir bei diesem Vorhaben jemand helfen könnte?

    Ich finde leider keinen Ansatz um den "tootip" zu missbrauchen,

    vielleicht hänge ich aber gerade auch einem falschen Ansatz hinterher.

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 14. September 2023 um 10:51

    BrokenHeart Alles gut.

    Ich habe mich auch schon gewundert, warum nicht viel öfters JavaScript genutzt wird.

    Man kann damit so viele herrliche Dinge anstellen, und CSS gleich integrieren.

    So hat man dann alles unter einem "Dach und Fach"!

    Ich nutze zig Cascading Style Sheets und verliere recht oft den Überblick, weil ich nicht mehr weis,

    in welcher Datei noch mal der Code für diese oder jene Anpassung steckt.

    Gerade der Code für die ganzen grafischen Anpassungen ist dann doch leider etwas verteilt.

    Zu meinem Glück habe ich ja in weiser Voraussicht alle Symbole in ein JavaScript gepackt,

    was ich aber noch machen muss, auch den Code für ausgeblendete Elemente entweder da

    oder an anderer Stelle "zentral" zusammenzufassen.

    Habe also noch eine Großbaustelle.


    Was den Button zur Datums- und Zeitanzeige angeht, würde ich das Ding gerne umgestalten.

    Es gibt so viele Popups die einen mit m.M. nach unwichtigen Infos versorgen, da kam mir,

    durch .DeJaVu angeregt, die Idee doch eine "Fläche" zu "programmieren", bei der das Popup die

    eigentliche Funktion der Anzeige übernimmt.

    Bedauerlicherweise habe ich da keine Erfahrung und auch im Netz nicht wirklich etwas gefunden.

    Aber auch hier, auf dieser Seite, werden solche Popups generiert und angezeigt!

    Man fahre doch mal über den Benutzernamen!

    Was für ein schönes Popup.

    Oder auf der Startseite des Forums, über ein x-beliebiges Thema in der Rubrik "Unerledigte Themen".

    So in etwa stelle ich mir das vor! Irgendwo auf irgendeiner Leiste ein "Symbol" oder eine "Fläche",

    die Fläche dann mit Bezeichnung (Schriftzug, z.B. Uhrzeit) und wenn man mit der Maus drüberfährt

    geht solch ein Popup auf und zeigt einem die Uhrzeiten, die man vorher ausgewählt hat, an.

    Das wäre was, finde ich.

    Und ich bin mir absolut sicher, dass das geht, nur ich bin noch nicht so weit, dass ich das umsetzen könnte.

    Zitat von Horstmann

    Funktioniert am Mac ohne die Zeile, besteht auch Elchtest! ;)

    Danke für die Rückmeldung.

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 13. September 2023 um 23:23
    Zitat von Mitleser

    Ist ja peinlich, sorry für den falschen Schrägstrich.

    Mir ist noch etwas anderes aufgefallen:

    Ist Zeile 86 ein Überbleibsel aus einem anderen Button?

    Danke für den Hinweis!

    Ja, habe den Code zum Teil aus einem bestehenden anderen Code genutzt.

    Diese Zeile kann gelöscht werden.

    Nur habe ich keinen blassen Schimmer, ob dieses Skript nun auch unter Linux und/oder auf einem Mac läuft.

  • FirefoxUhr / auch bei Vollbild sichtbare Uhr (Tipp!)

    • Mira_Belle
    • 13. September 2023 um 21:26

    Oh meine Güte.

    Ich finde es toll, dass worel auf diese Erweiterung hingewiesen hat,

    und für mich war es eine Herausforderung und Fingerübung.

    Muss ja niemand nutzen :!:

    Wobei, .DeJaVu, Du hast mich da auf eine Idee gebracht.

    Es müsste sich doch der Tooltiptext missbrauchen. :/

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 13. September 2023 um 21:16
    Zitat von Sören Hentzschel

    Ich hatte die falsche Schreibweise zunächst auch übersehen, es muss \t heißen. Ähnlich wie du \n ja auch für einen Zeilenumbruch verwendest, fügst du auf diese Weise einen Tab ein.

    Danke für die Erklärung,

    ist aber dennoch nicht zu gebrauchen.

    Im Gegenteil, der Versatz zwischen Mittwoch und Donnerstag wird sogar noch größer.

    Dann bleibt es halt, wie es ist.

    Hier mal der derzeitige Code:

    JavaScript
    // JavaScript Document
    // Clock.uc.js
    // Source file https://www.camp-firefox.de/forum/thema/136920/?postID=1235096#post1235096
    
    (function() {
    
       if (location.href !== 'chrome://browser/content/browser.xhtml') return; 
       try {
          CustomizableUI.createWidget({
             id: 'time-button',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {         
                let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                // toolbaritem.onclick = event => onClick(event); // Fallback für Dharkness ;)
                var props = {
                   id: 'time-button',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'Uhrzeit anzeigen',
                   accesskey: '', // Wer möchte kann hier z.B. 'C' eintragen, dann kann per "Alt + C" das Skript ausgeführt werden
                   tooltiptext: 'Uhrzeit',
                };  
    
                for (var p in props)
                   toolbaritem.setAttribute(p, props[p]); 
    
                toolbaritem.onclick = function (event) {
                   if (event.button === 0) {
    
                      let t = new Date()
                      let language = 'de-DE';
    
                      let = d10 = t.toLocaleDateString( 'de-DE', { timeZone: 'Europe/Berlin',weekday: "long"} )
                      let = d20 = t.toLocaleDateString(`${language}`,{timeZone:'America/New_York',weekday: "long"} )
                      let = d30 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Moscow',weekday: "long"} )
                      let = d40 = t.toLocaleDateString(`${language}`,{timeZone:'Asia/Hong_Kong',weekday: "long"} )
                      let = d50 = t.toLocaleDateString(`${language}`,{timeZone:'Australia/Sydney',weekday: "long"} )
    
                      let = h10 = t.toLocaleTimeString(`${language}`,{timeZone:'Europe/Berlin',hour:'numeric',minute:'numeric',hour12:false})
                      let = h20 = t.toLocaleTimeString(`${language}`,{timeZone:'America/New_York',hour:'numeric',minute:'numeric',hour12:false})
                      let = h30 = t.toLocaleTimeString(`${language}`,{timeZone:'Europe/Moscow',hour:'numeric',minute:'numeric',hour12:false})
                      let = h40 = t.toLocaleTimeString(`${language}`,{timeZone:'Asia/Hong_Kong',hour:'numeric',minute:'numeric',hour12:false})
                      let = h50 = t.toLocaleTimeString(`${language}`,{timeZone:'Australia/Sydney',hour:'numeric',minute:'numeric',hour12:false})
    
                      let = x10 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Berlin',day: "numeric", month: "2-digit", year: "numeric"})
                      let = x20 = t.toLocaleDateString(`${language}`,{timeZone:'America/New_York',day: "numeric", month: "2-digit", year: "numeric"})
                      let = x30 = t.toLocaleDateString(`${language}`,{timeZone:'Europe/Moscow',day: "numeric", month: "2-digit", year: "numeric"})
                      let = x40 = t.toLocaleDateString(`${language}`,{timeZone:'Asia/Hong_Kong',day: "numeric", month: "2-digit", year: "numeric"})
                      let = x50 = t.toLocaleDateString(`${language}`,{timeZone:'Australia/Sydney',day: "numeric", month: "2-digit", year: "numeric"})
    
                      alert (`
                      Es ist ${d10}. der ${x10} - es ist ${h10} Uhr in Berlin\n
                      Es ist ${d20}. der ${x20} - es ist ${h20} Uhr in New York\n
                      Es ist ${d30}. der ${x30} - es ist ${h30} Uhr in Moskau
                      Es ist ${d40}. der ${x40} - es ist ${h40} Uhr in Hong Kong              \xa0
                      Es ist ${d50}. der ${x50} - es ist ${h50} Uhr in Sydney 
                      
                      `);
    
                   }
                };
    
                return toolbaritem;
             }    
          });
       } catch(e) { };
    
       let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner
       let ButtonIcon = "clock.svg"; // Name & Dateiendung des anzuzeigenden Symbols!
       let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
       let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    
           #time-button { list-style-image: url("${ProfilePath}/${ButtonIcon}") }
           #time-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon {
             width: 32px !important;
             height: 32px !important;
             fill: lime !important;
             fill-opacity: 1 !important;
             }
    
          `), null, null);
    
       sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
       document.getElementById('profileschange-button').addEventListener( "click", onClick ); // Ist für Linunx und Mac OS zwingend notwendig
    
    })(); 
    Alles anzeigen
  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 13. September 2023 um 19:54

    Also mit dem /t weiß ich nichts anzufangen! Sorry.

    Aber ich habe noch etwas am Code herumexperimentiert!

    Nun schaut es so aus:

    Besser bekomme ich es einfach nicht hin.

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 12. September 2023 um 23:03
    Zitat von Horstmann

    Ausserdem finde ich es immer nett, wenn ein Script Button nur mit normalem Linksklick angesprochen wird statt mit allen Klicks, ausser man benutzt Extrafunktionen für die anderen Klicks.

    Nur so ein Gedanke. ;)

    I am Groot!

    Mache aus toolbaritem.onclick = function () {

    das =>

    JavaScript
                toolbaritem.onclick = function (event) {
                   if (event.button === 0) { ....

    und füge noch eine }  nach

    window.alert(t10+' Berlin\n'+t20+' New York\n'+t30+' Moscow\n'+t40+' Hong Kong\n'+t50+' Sydney'); ein. :D

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 12. September 2023 um 22:43
    Zitat von Horstmann

    Wenn ich einen Vorschlag machen dürfte: width und height sollten vielleicht generell nicht festgelegt werden für den Button; ...

    Ist, war von mir aber so beabsichtigt!

    Wer das nicht mag, kann es ja ausklammern ;)

    Zitat von Horstmann

    ...

    Ausserdem finde ich es immer nett, wenn ein Script Button nur mit normalem Linksklick angesprochen wird statt mit allen Klicks, ausser man benutzt Extrafunktionen für die anderen Klicks.

    Da ich trotz dieser Fortschritte immer noch nicht wirklich etwas von JavaScript verstehe,

    ich finde, es ist ein Wunder, dass ich das hinbekommen habe,

    wirst Du mir den "richtigen" Codeschnipsel um Deine Idee umsetzen zu können,

    schon zukommen lassen müssen.

    Denn ich habe keine Ahnung, wie das funktionieren soll.

    Wo bei, so einen Verdacht habe ich schon, mal schau'n.

    Zitat von Sören Hentzschel

    Der Titel kann aus Sicherheitsgründen nicht geändert werden. Im Kontext einer Website steht dort die Domain. Ansonsten eben genau das.

    Ok, dann ist das halt so. Danke für die Erklärung.

    Wie schauts mit der Formatierung aus?

    Jemand eine Idee?

  • Button für ein Popup zur Zeitanzeige verschiedener Städte in verschiedenen Zeitzonen

    • Mira_Belle
    • 12. September 2023 um 21:02

    Ich habe mal etwas gebastelt.

    Inspiriert würde ich durch worels Beitrag.

    Ich bräuchte aber noch ein kleines bisschen Hilfe!

    Das Skript funktioniert.

    Nur der Titel!!

    Wie kann dieser geändert werden?

    Z.B. "Eieruhr", oder was auch immer.

    Und wenn man sich die "Liste" anschaut, fällt einem auch sofort auf,

    der Versatz bei ungleich langen "Tagen".

    Wie lässt sich das schöner formatieren?

    Hier nun mal das JavaScript:

    JavaScript
    (function() {
    
       if (location.href !== 'chrome://browser/content/browser.xhtml') return; 
       try {
          CustomizableUI.createWidget({
             id: 'time-button',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {         
                let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
    //            toolbaritem.onclick = event => onClick(event); // Fallback für Dharkness ;)
                var props = {
                   id: 'time-button',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'Uhrzeit anzeigen',
                   accesskey: '', // Wer möchte kann hier z.B. 'C' eintragen, dann kann per "Alt + C" das Skript ausgeführt werden
                   tooltiptext: 'Uhrzeit',
                };            
                for (var p in props)
                   toolbaritem.setAttribute(p, props[p]);            
    
                // Hinzufügen des Klick-Event-Handlers für das Popup
                toolbaritem.onclick = function () {
                   var t,t10,t20,t30,t40,t50;
                   t = new Date()
                   t10=t.toLocaleTimeString('de-DE',{timeZone:'Europe/Berlin',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   t20=t.toLocaleTimeString('de-DE',{timeZone:'America/New_York',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   t30=t.toLocaleTimeString('de-DE',{timeZone:'Europe/Moscow',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   t40=t.toLocaleTimeString('de-DE',{timeZone:'Asia/Hong_Kong',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   t50=t.toLocaleTimeString('de-DE',{timeZone:'Australia/Sydney',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   alert(t10+' Berlin\n'+t20+' New York\n'+t30+' Moscow\n'+t40+' Hong Kong\n'+t50+' Sydney')
                };
    
                return toolbaritem;
             }    
          });
       } catch(e) { };
       
       let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner
       let ButtonIcon = "clock.svg"; // Name & Dateiendung des anzuzeigenden Symbols!
       let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
       let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    
           #time-button { list-style-image: url("${ProfilePath}/${ButtonIcon}") }
           #time-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon {
             width: 32px !important;
             height: 32px !important;
             fill: lime !important;
             fill-opacity: 1 !important;
             }
    
          `), null, null);
    
       sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
       document.getElementById('profileschange-button').addEventListener( "click", onClick ); // Ist für Linunx und Mac OS zwingend notwendig
    
    })();  
    Alles anzeigen

    Wichtig :!:

    Diese Liste.

    Code
    Städtecodes :
    
      'Europe/Andorra',
      'Asia/Dubai',
      'Asia/Kabul',
      'Europe/Tirane',
      'Asia/Yerevan',
      'Antarctica/Casey',
      'Antarctica/Davis',
      'Antarctica/DumontDUrville',
      'Antarctica/Mawson',
      'Antarctica/Palmer',
      'Antarctica/Rothera',
      'Antarctica/Syowa',
      'Antarctica/Troll',
      'Antarctica/Vostok',
      'America/Argentina/Buenos_Aires',
      'America/Argentina/Cordoba',
      'America/Argentina/Salta',
      'America/Argentina/Jujuy',
      'America/Argentina/Tucuman',
      'America/Argentina/Catamarca',
      'America/Argentina/La_Rioja',
      'America/Argentina/San_Juan',
      'America/Argentina/Mendoza',
      'America/Argentina/San_Luis',
      'America/Argentina/Rio_Gallegos',
      'America/Argentina/Ushuaia',
      'Pacific/Pago_Pago',
      'Europe/Vienna',
      'Australia/Lord_Howe',
      'Antarctica/Macquarie',
      'Australia/Hobart',
      'Australia/Currie',
      'Australia/Melbourne',
      'Australia/Sydney',
      'Australia/Broken_Hill',
      'Australia/Brisbane',
      'Australia/Lindeman',
      'Australia/Adelaide',
      'Australia/Darwin',
      'Australia/Perth',
      'Australia/Eucla',
      'Asia/Baku',
      'America/Barbados',
      'Asia/Dhaka',
      'Europe/Brussels',
      'Europe/Sofia',
      'Atlantic/Bermuda',
      'Asia/Brunei',
      'America/La_Paz',
      'America/Noronha',
      'America/Belem',
      'America/Fortaleza',
      'America/Recife',
      'America/Araguaina',
      'America/Maceio',
      'America/Bahia',
      'America/Sao_Paulo',
      'America/Campo_Grande',
      'America/Cuiaba',
      'America/Santarem',
      'America/Porto_Velho',
      'America/Boa_Vista',
      'America/Manaus',
      'America/Eirunepe',
      'America/Rio_Branco',
      'America/Nassau',
      'Asia/Thimphu',
      'Europe/Minsk',
      'America/Belize',
      'America/St_Johns',
      'America/Halifax',
      'America/Glace_Bay',
      'America/Moncton',
      'America/Goose_Bay',
      'America/Blanc-Sablon',
      'America/Toronto',
      'America/Nipigon',
      'America/Thunder_Bay',
      'America/Iqaluit',
      'America/Pangnirtung',
      'America/Atikokan',
      'America/Winnipeg',
      'America/Rainy_River',
      'America/Resolute',
      'America/Rankin_Inlet',
      'America/Regina',
      'America/Swift_Current',
      'America/Edmonton',
      'America/Cambridge_Bay',
      'America/Yellowknife',
      'America/Inuvik',
      'America/Creston',
      'America/Dawson_Creek',
      'America/Fort_Nelson',
      'America/Vancouver',
      'America/Whitehorse',
      'America/Dawson',
      'Indian/Cocos',
      'Europe/Zurich',
      'Africa/Abidjan',
      'Pacific/Rarotonga',
      'America/Santiago',
      'America/Punta_Arenas',
      'Pacific/Easter',
      'Asia/Shanghai',
      'Asia/Urumqi',
      'America/Bogota',
      'America/Costa_Rica',
      'America/Havana',
      'Atlantic/Cape_Verde',
      'America/Curacao',
      'Indian/Christmas',
      'Asia/Nicosia',
      'Asia/Famagusta',
      'Europe/Prague',
      'Europe/Berlin',
      'Europe/Copenhagen',
      'America/Santo_Domingo',
      'Africa/Algiers',
      'America/Guayaquil',
      'Pacific/Galapagos',
      'Europe/Tallinn',
      'Africa/Cairo',
      'Africa/El_Aaiun',
      'Europe/Madrid',
      'Africa/Ceuta',
      'Atlantic/Canary',
      'Europe/Helsinki',
      'Pacific/Fiji',
      'Atlantic/Stanley',
      'Pacific/Chuuk',
      'Pacific/Pohnpei',
      'Pacific/Kosrae',
      'Atlantic/Faroe',
      'Europe/Paris',
      'Europe/London',
      'Asia/Tbilisi',
      'America/Cayenne',
      'Africa/Accra',
      'Europe/Gibraltar',
      'America/Godthab',
      'America/Danmarkshavn',
      'America/Scoresbysund',
      'America/Thule',
      'Europe/Athens',
      'Atlantic/South_Georgia',
      'America/Guatemala',
      'Pacific/Guam',
      'Africa/Bissau',
      'America/Guyana',
      'Asia/Hong_Kong',
      'America/Tegucigalpa',
      'America/Port-au-Prince',
      'Europe/Budapest',
      'Asia/Jakarta',
      'Asia/Pontianak',
      'Asia/Makassar',
      'Asia/Jayapura',
      'Europe/Dublin',
      'Asia/Jerusalem',
      'Asia/Kolkata',
      'Indian/Chagos',
      'Asia/Baghdad',
      'Asia/Tehran',
      'Atlantic/Reykjavik',
      'Europe/Rome',
      'America/Jamaica',
      'Asia/Amman',
      'Asia/Tokyo',
      'Africa/Nairobi',
      'Asia/Bishkek',
      'Pacific/Tarawa',
      'Pacific/Enderbury',
      'Pacific/Kiritimati',
      'Asia/Pyongyang',
      'Asia/Seoul',
      'Asia/Almaty',
      'Asia/Qyzylorda',
      'Asia/Qostanay', // https://bugs.chromium.org/p/chromium/issues/detail?id=928068
      'Asia/Aqtobe',
      'Asia/Aqtau',
      'Asia/Atyrau',
      'Asia/Oral',
      'Asia/Beirut',
      'Asia/Colombo',
      'Africa/Monrovia',
      'Europe/Vilnius',
      'Europe/Luxembourg',
      'Europe/Riga',
      'Africa/Tripoli',
      'Africa/Casablanca',
      'Europe/Monaco',
      'Europe/Chisinau',
      'Pacific/Majuro',
      'Pacific/Kwajalein',
      'Asia/Yangon',
      'Asia/Ulaanbaatar',
      'Asia/Hovd',
      'Asia/Choibalsan',
      'Asia/Macau',
      'America/Martinique',
      'Europe/Malta',
      'Indian/Mauritius',
      'Indian/Maldives',
      'America/Mexico_City',
      'America/Cancun',
      'America/Merida',
      'America/Monterrey',
      'America/Matamoros',
      'America/Mazatlan',
      'America/Chihuahua',
      'America/Ojinaga',
      'America/Hermosillo',
      'America/Tijuana',
      'America/Bahia_Banderas',
      'Asia/Kuala_Lumpur',
      'Asia/Kuching',
      'Africa/Maputo',
      'Africa/Windhoek',
      'Pacific/Noumea',
      'Pacific/Norfolk',
      'Africa/Lagos',
      'America/Managua',
      'Europe/Amsterdam',
      'Europe/Oslo',
      'Asia/Kathmandu',
      'Pacific/Nauru',
      'Pacific/Niue',
      'Pacific/Auckland',
      'Pacific/Chatham',
      'America/Panama',
      'America/Lima',
      'Pacific/Tahiti',
      'Pacific/Marquesas',
      'Pacific/Gambier',
      'Pacific/Port_Moresby',
      'Pacific/Bougainville',
      'Asia/Manila',
      'Asia/Karachi',
      'Europe/Warsaw',
      'America/Miquelon',
      'Pacific/Pitcairn',
      'America/Puerto_Rico',
      'Asia/Gaza',
      'Asia/Hebron',
      'Europe/Lisbon',
      'Atlantic/Madeira',
      'Atlantic/Azores',
      'Pacific/Palau',
      'America/Asuncion',
      'Asia/Qatar',
      'Indian/Reunion',
      'Europe/Bucharest',
      'Europe/Belgrade',
      'Europe/Kaliningrad',
      'Europe/Moscow',
      'Europe/Simferopol',
      'Europe/Kirov',
      'Europe/Astrakhan',
      'Europe/Volgograd',
      'Europe/Saratov',
      'Europe/Ulyanovsk',
      'Europe/Samara',
      'Asia/Yekaterinburg',
      'Asia/Omsk',
      'Asia/Novosibirsk',
      'Asia/Barnaul',
      'Asia/Tomsk',
      'Asia/Novokuznetsk',
      'Asia/Krasnoyarsk',
      'Asia/Irkutsk',
      'Asia/Chita',
      'Asia/Yakutsk',
      'Asia/Khandyga',
      'Asia/Vladivostok',
      'Asia/Ust-Nera',
      'Asia/Magadan',
      'Asia/Sakhalin',
      'Asia/Srednekolymsk',
      'Asia/Kamchatka',
      'Asia/Anadyr',
      'Asia/Riyadh',
      'Pacific/Guadalcanal',
      'Indian/Mahe',
      'Africa/Khartoum',
      'Europe/Stockholm',
      'Asia/Singapore',
      'America/Paramaribo',
      'Africa/Juba',
      'Africa/Sao_Tome',
      'America/El_Salvador',
      'Asia/Damascus',
      'America/Grand_Turk',
      'Africa/Ndjamena',
      'Indian/Kerguelen',
      'Asia/Bangkok',
      'Asia/Dushanbe',
      'Pacific/Fakaofo',
      'Asia/Dili',
      'Asia/Ashgabat',
      'Africa/Tunis',
      'Pacific/Tongatapu',
      'Europe/Istanbul',
      'America/Port_of_Spain',
      'Pacific/Funafuti',
      'Asia/Taipei',
      'Europe/Kiev',
      'Europe/Uzhgorod',
      'Europe/Zaporozhye',
      'Pacific/Wake',
      'America/New_York',
      'America/Detroit',
      'America/Kentucky/Louisville',
      'America/Kentucky/Monticello',
      'America/Indiana/Indianapolis',
      'America/Indiana/Vincennes',
      'America/Indiana/Winamac',
      'America/Indiana/Marengo',
      'America/Indiana/Petersburg',
      'America/Indiana/Vevay',
      'America/Chicago',
      'America/Indiana/Tell_City',
      'America/Indiana/Knox',
      'America/Menominee',
      'America/North_Dakota/Center',
      'America/North_Dakota/New_Salem',
      'America/North_Dakota/Beulah',
      'America/Denver',
      'America/Boise',
      'America/Phoenix',
      'America/Los_Angeles',
      'America/Anchorage',
      'America/Juneau',
      'America/Sitka',
      'America/Metlakatla',
      'America/Yakutat',
      'America/Nome',
      'America/Adak',
      'Pacific/Honolulu',
      'America/Montevideo',
      'Asia/Samarkand',
      'Asia/Tashkent',
      'America/Caracas',
      'Asia/Ho_Chi_Minh',
      'Pacific/Efate',
      'Pacific/Wallis',
      'Pacific/Apia',
      'Africa/Johannesburg'
    Alles anzeigen
  • FirefoxUhr / auch bei Vollbild sichtbare Uhr (Tipp!)

    • Mira_Belle
    • 12. September 2023 um 20:31

    Scheiße, hat das einen Spaß gemacht :!:

    Hier einmal ein JavaScript, das einen Button erzeugt und beim draufklicken

    wird ein "Popupfenster" angezeigt mit Uhrzeit und Datum

    in Berlin, New York, Hong_Kong, Sydney.

    Aber das Skript kann beliebig angepasst werden.

    JavaScript
    (function() {
    
       if (location.href !== 'chrome://browser/content/browser.xhtml') return; 
       try {
          CustomizableUI.createWidget({
             id: 'time-button',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {         
                let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
    //            toolbaritem.onclick = event => onClick(event); // Fallback für Dharkness ;)
                var props = {
                   id: 'time-button',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'Uhrzeit anzeigen',
                   accesskey: '', // Wer möchte kann hier z.B. 'C' eintragen, dann kann per "Alt + C" das Skript ausgeführt werden
                   tooltiptext: 'Uhrzeit',
                };            
                for (var p in props)
                   toolbaritem.setAttribute(p, props[p]);            
    
                // Hinzufügen des Klick-Event-Handlers für das Popup
                toolbaritem.onclick = function () {
                   var t,t10,t20,t30,t40,t50;
                   t = new Date()
                   t10=t.toLocaleTimeString('de-DE',{timeZone:'Europe/Berlin',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   t20=t.toLocaleTimeString('de-DE',{timeZone:'America/New_York',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   t30=t.toLocaleTimeString('de-DE',{timeZone:'Europe/Moscow',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   t40=t.toLocaleTimeString('de-DE',{timeZone:'Asia/Hong_Kong',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   t50=t.toLocaleTimeString('de-DE',{timeZone:'Australia/Sydney',weekday:'long',day:'numeric',month:'short',hour:'numeric',minute:'numeric',hour12:false})
                   alert(t10+' Berlin\n'+t20+' New York\n'+t30+' Moscow\n'+t40+' Hong_Kong\n'+t50+' Sydney')
                };
    
                return toolbaritem;
             }    
          });
       } catch(e) { };
       
       let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner
       let ButtonIcon = "default-browser-red.svg"; // Name & Dateiendung des anzuzeigenden Symbols!
       let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
       let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    
           #time-button { list-style-image: url("${ProfilePath}/${ButtonIcon}") }
           #time-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon {
             width: 32px !important;
             height: 32px !important;
    /*         fill: #E0E0E0 !important;    */
             fill-opacity: 1 !important;
             }
    
          `), null, null);
    
       sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
       document.getElementById('profileschange-button').addEventListener( "click", onClick ); // Ist für Linunx und Mac OS zwingend notwendig
    
    })();   
    Alles anzeigen
  • Symbole in den Kontextmenüs [ Update ]

    • Mira_Belle
    • 12. September 2023 um 10:33

    Tada :!:

    Es ist so weit!

    Es gibt "neue" Symbole in Form von Vektorgrafiken.

    Außerdem habe ich ausgemistet!

    Der Code des JavaSkripts wurde schon angepasst,

    das CSS liefere ich hier noch nach.

    Auch das CSS für die Symbole in der Bibliothek ist fertig.

    JavaScript
    // Symbole.uc.js
    
    /* ****************************************************************************************************************** */
    /* Die Entstehung des Symbole.css => https://www.camp-firefox.de/forum/thema/134970/?postID=1205292#post1205292       */
    /* ****************************************************************************************************************** */ 
    /* Das JavaScript                                                                                                     */
    /* https://www.camp-firefox.de/forum/thema/134970/?postID=1216936#post1216936                                         */
    /* version 1.0                                                                                                        */
    /* https://www.camp-firefox.de/forum/thema/134970/?postID=1235046#post1235046                                         */
    /* version 2.0                                                                                                        */
    /* ****************************************************************************************************************** */
    
    (function() {
    //    if (location.href !== 'chrome://browser/content/browser.xhtml') return;
    
        let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    
    //    var css =`
    
    let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
    let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    
            /*--------------------------------------------------------------------------*/    
            /*--------- Texte im Hamburgermenü und in den Submenüs eingerückt ----------*/
            /*-------------- und in dem Anmeldenbutton das Icon eingefügt --------------*/
            /*--------------------------------------------------------------------------*/
    
            .subviewbutton:not(.subviewbutton-iconic, [checked="true"], [targetURI]) > .toolbarbutton-icon {
                width: 16px;
                height: 16px;
                margin-inline-end: 8px !important;
                -moz-context-properties: fill, fill-opacity;
                fill: currentColor;
            }
    
            #appMenu-fxa-label2::before,
            #fxa-manage-account-button::after {
                content: "";
                display: -moz-box;
                border-radius: 50%;
                background: var(--avatar-image-url) no-repeat center/contain;
                -moz-context-properties: fill;
                fill: currentColor;
            }
    
            #appMenu-fxa-label2::before {
                width: 16px;
                height: 16px;
                margin-inline-end: 8px;
            }
    
            /* Neuer Tab */
    /*        #appMenu-new-tab-button2 { list-style-image: url("${ProfilePath}/session.svg"); }    */
            #appMenu-new-tab-button2 { list-style-image: url("${ProfilePath}/tab-open.svg"); }
            /* Neues Fenster */
    /*        #appMenu-new-window-button2 { list-style-image: url("${ProfilePath}/window.svg"); }    */
            #appMenu-new-window-button2 { list-style-image: url("${ProfilePath}/session.svg"); }
            /* Neues privates Fenster */
            #appMenu-new-private-window-button2 { list-style-image: url("${ProfilePath}/privateBrowsing.svg"); }
            /* Lesezeichen */
            #appMenu-bookmarks-button { list-style-image: url("${ProfilePath}/bookmark.svg"); }
            /* Neues privates Fenster */
            #appMenu-new-private-window-button2 { list-style-image: url("${ProfilePath}/privateBrowsing.svg"); }
            /* Lesezeichen */
            #appMenu-bookmarks-button { list-style-image: url("${ProfilePath}/bookmark.svg"); }
            /* Chronik */
            #appMenu-history-button { list-style-image: url("${ProfilePath}/history.svg"); }
            /* Download */
            #appMenu-downloads-button { list-style-image: url("${ProfilePath}/downloads.svg"); }
            /* Passwörter */
            #appMenu-passwords-button { list-style-image: url("${ProfilePath}/passwords.svg"); }
            /* Add-ons und Themes */
            #appMenu-extensions-themes-button { list-style-image: url("${ProfilePath}/addons.svg"); }
            /* Drucken */
            #appMenu-print-button2 { list-style-image: url("${ProfilePath}/printer.svg"); }
            /* Seite speichern unter */
            #appMenu-save-file-button2 { list-style-image: url("${ProfilePath}/folder-save.svg"); }
            /* In Seite suchen */
            #appMenu-find-button2 { list-style-image: url("${ProfilePath}/search.svg"); }
            /* Seite übersetzen */
            #appMenu-translate-button { list-style-image: url("${ProfilePath}/translations.svg"); }
    
            /* Zoom */
    
            #appMenu-zoom-controls::before {
                margin-top: 3px !important;
                margin-right: 10px !important; 
                margin-left: -1px !important;
                content: '' !important;
                display: block !important;
                width: 16px !important;
                height: 16px !important;
                mask-image:  url("${ProfilePath}/screenshot.svg") !important;
                mask-repeat: no-repeat;
                mask-position: center;
                background-color: #e1e1e1 !important;
            }
    
            /*Einstellungen */
            #appMenu-settings-button { list-style-image: url("${ProfilePath}/settings.svg"); }
            /*Weitere Werkzeuge */
            #appMenu-more-button2 { list-style-image: url("${ProfilePath}/debugging-workers.svg"); }
            /* Hilfe */
            #appMenu-help-button2 { list-style-image: url("${ProfilePath}/help.svg"); }
            /* Beenden */
            #appMenu-quit-button2 { list-style-image: url("${ProfilePath}/quit.svg"); }
    
            /*= Panel - Bookmark =========================================================*/
        
            /* Lesezeichen bearbeiten */
            
            [data-l10n-id="bookmarks-bookmark-edit-panel"]::before {
                margin-top: 3px !important;    
                margin-right: -15px !important;
                margin-left: -1px !important;
                content: '' !important;
                display: block !important;
                width: 16px !important;
                height: 16px !important;
                mask-image: url("${ProfilePath}/window.svg") !important;
                mask-repeat: no-repeat;
                mask-position: center;
                background-color: #e1e1e1 !important;
            }
    
            /* Aktuellen Tab als Lesezeichen ... */
    
            [data-l10n-id="bookmarks-current-tab"]::before {
                margin-top: 3px !important;    
                margin-right: -15px !important;
                margin-left: -1px !important;
                content: '' !important;
                display: block !important;
                width: 16px !important;
                height: 16px !important;
                mask-image: url("${ProfilePath}/session.svg") !important;
                mask-repeat: no-repeat;
                mask-position: center;
                background-color: #e1e1e1 !important;
            }
    
            /* Dieses Lesezeichen bearbeiten...  */
            #panelMenuBookmarkThisPage { list-style-image: url("${ProfilePath}/bookmark-hollow.svg"); }
            /* Lesezeichen durchsuchen */
            #panelMenu_searchBookmarks { list-style-image: url("${ProfilePath}/search.svg"); }
            /* Lesezeichen-Symbolleiste ausblenden */
            #panelMenu_viewBookmarksToolbar { list-style-image: url("${ProfilePath}/bookmarks-toolbar.svg"); }
            /* Lesezeichen verwalten */
            #panelMenu_showAllBookmarks { list-style-image: url("${ProfilePath}/bookmarks-tray.svg"); } 
    
            /*= Panel - Chronik ===========================================================*/
            /*= Panel - History ==========================================================*/
        
            /* Kürzlich geschlossene Tabs */
    /*        #appMenuRecentlyClosedTabs { list-style-image: url("${ProfilePath}/tab.svg"); }    */
            #appMenuRecentlyClosedTabs { list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACcklEQVRYR8WWzVEbQRBGtRHYHHy2iAAIgEJkIEdgcfbBEAEiAhcXrogITAbI5QAMVQ5gdfYBiEB8b6uHaq1md2ZXBk3VlHa0/fOmu6dni8GWR7Fl/4NWgOVyeSvAz5rHRVE8xWAls6//P7h3C8mWuRtLASzN0L2HkNOPWn/XnGgOI86QnwnkMgWSC4CdCkKTHf/UBCI1iMQXgaAbHV0AMIBBv+OF1qQJB7wDamwzpIXUnQgCubXRFcAbuJDRacyopYh3pIkBBHW0Fom+AHMZIx2tQyATCVybUCmd3bpCXwDsUGQnGRBE4tzkSMXM62wCkAVh6SglTE3cC+DgfwJgiyqPFlhwJIhTPf+w9a7vE6kIUDR7iTA3FqMDGOn5ztYU4zy8SwFwrDj3TeOp7Yx7JUUhNLUV4He7CzYGkIGhdsS9kDMe/N1hhfhoit0iYJcN+ctpvR5upsUZILJBd6R9MzrVALv+08N5ALkRwEQAwHzlT61X0p4qwql0QhO50PM8J/6SmQSH+j3U/G16FZC3kQIoJUzef0lxlOl8UMv5P+l9Mt2D+qlJAUSPTg6IIIjWkZO9lHMa0spoBJABdhxtHpkAPn1/SYU/GcFGG0Bj+8wE8Bv4JudXMb02gNCGn6Xc9QhWvlzz4a7gJlz7rnwFsMLhqEBO+x0acTR3mVGYSa46fhqlzbl+sVnBeAAvHOzzybUfI88EIHJEst5BXzflAULF4xRaFKd9nQdAiyz1RFSZwHCJ7dQj0PvI5UQDGcFM9VM1ttARYxEgR8y3GCMZZUYBCHvubbcp3EIRGNZTQH44Lm8NQY2NQ0t+tw+SppBtHeAFE7gPMJeICC4AAAAASUVORK5CYII="); }
            /* Kürzlich geschlossene Fenster */
            #appMenuRecentlyClosedWindows { list-style-image: url("${ProfilePath}/window.svg"); }
            /* Vorherige Sitzung wiederherstellen */
            #appMenu-restoreSession{ list-style-image: url("${ProfilePath}/session-restore.svg"); }
            /* Neueste Chronik löschen ... */
            #appMenuClearRecentHistory { list-style-image: url("${ProfilePath}/history-forget.svg"); }
            /* Chronik verwalten */
            #PanelUI-historyMore { list-style-image: url("${ProfilePath}/history.svg"); }
            /* Alle Tabs wieder öffnen */
            #appMenu-library-recentlyClosedTabs { list-style-image: url("${ProfilePath}/window-move.svg"); }
            /* Alle Fenster wieder öffnen */
            #appMenu-library-recentlyClosedWindows { list-style-image: url("${ProfilePath}/session-restore.svg"); }
            /* Chronik durchsuchen */
            #appMenuSearchHistory { list-style-image: url("${ProfilePath}/window-search.svg"); }
    
            /*= Panel - More tools =======================================================*/
        
            /* Symbolleiste anpassen ... */
            #appmenu-moreTools-button { list-style-image: url("${ProfilePath}/Themes.svg"); }
            /* Werkzeuge für Web-... */
            #appmenu-developer-tools-view .subviewbutton:nth-child(1) { list-style-image: url("${ProfilePath}/developer.svg"); }
            /* Task Manager */
            #appmenu-developer-tools-view .subviewbutton:nth-child(2) { list-style-image: url("${ProfilePath}/performance.svg"); }
            /* Externes Debugging - Edge bug.svg */
            #appmenu-developer-tools-view .subviewbutton:nth-child(3) { list-style-image: url("${ProfilePath}/bug.svg"); }
            /* Browser-Werkzeuge - Edge webdeveloper.svg */
            #appmenu-developer-tools-view .subviewbutton:nth-child(4) { list-style-image: url("${ProfilePath}/window-dev-tools.svg"); }
            /* Browser-Inhaltswerkzeuge */
            #appmenu-developer-tools-view .subviewbutton:nth-child(5) { list-style-image: url("${ProfilePath}/command-frames.svg"); }
            /* Browser-Konsole */
            #appmenu-developer-tools-view .subviewbutton:nth-last-child(5) { list-style-image: url("${ProfilePath}/command-console.svg"); }
            /* Bildschirmgrößen testen */
            #appmenu-developer-tools-view .subviewbutton:nth-last-child(4) { list-style-image: url("${ProfilePath}/command-responsivemode.svg"); }
            /* Farbpipette */
            #appmenu-developer-tools-view .subviewbutton:nth-last-child(3) { list-style-image: url("${ProfilePath}/command-eyedropper.svg"); }
            /* Seitenquelltext anzeigen - Edge file-search.svg */
            #appmenu-developer-tools-view .subviewbutton:nth-last-child(2) { list-style-image: url("${ProfilePath}/document-search.svg"); }
            /* Erweiterungen für Entwickler */
            #appmenu-developer-tools-view .subviewbutton:nth-last-child(1) { list-style-image: url("${ProfilePath}/addons.svg"); }
        
            /*= Panel - Help =============================================================*/
        
            /* Hilfe erhalten */  
            #appMenu_menu_openHelp { list-style-image: url("${ProfilePath}/help.svg"); }
            /* Ideen und Feedback teilen ... */
            #appMenu_feedbackPage { list-style-image: url("${ProfilePath}/send.svg"); }
            /* Fehlerbehebungsmodus ... */
            #appMenu_helpSafeMode { list-style-image: url("${ProfilePath}/debugging-workers.svg"); }
            /* Weitere Informationen zur ... */
            #appMenu_troubleShooting { list-style-image: url("${ProfilePath}/more.svg"); }
            /* ?? Eine Glühbirne ?? */
            #appMenu_help_reportSiteIssue { list-style-image: url("${ProfilePath}/lightbulb.svg"); }
            /* Betrügerische Website melden ... */
            #appMenu_menu_HelpPopup_reportPhishingtoolmenu { list-style-image: url("${ProfilePath}/warning.svg"); }
            /* Zu einem neuen Gerät wechseln */
            #appMenu_helpSwitchDevice { list-style-image: url("${ProfilePath}/send-to-device.svg"); }
            /* Über Firefox */
            #appMenu_aboutName { list-style-image: url("${ProfilePath}/firefox.svg"); }
    
            /* ================================================================================================== */
    
            /*Abstände für alle Icons im Kontextmenü*/
            
            menupopup:not(.in-menulist) > menu:not(.menu-iconic),
            menupopup:not(.in-menulist, [aria-label]) > menuitem:not(.menuitem-iconic, [checked="true"]) {
                padding-inline-start: calc(1em + 24px) !important;
                background-position: left 1em center;
                background-repeat: no-repeat;
                background-size: 16px;
                -moz-context-properties: fill, fill-opacity;
                fill: #E0E0E0 !important;
    
            }
            /*    
            menu[_moz-menuactive="true"][disabled="true"],
            menuitem[_moz-menuactive="true"][disabled="true"] { */
            /*
            :is(menu,menuitem)[_moz-menuactive="true"][disabled="true"] {
                background-color: #5C5C5C !important;
                border-radius: 4px !important;
            }    
            */
            #context-savepage { background-image: url("${ProfilePath}/folder-save.svg"); }
            #context-pocket { background-image: url("${ProfilePath}/pocket-outline.svg"); }
            #context-selectall { background-image: url("${ProfilePath}/select-all-on.svg"); }
            #context-take-screenshot { background-image: url("${ProfilePath}/screenshot.svg"); }
            #context-viewsource { background-image: url("${ProfilePath}/document-search.svg"); }
            #context-inspect-a11y { background-image: url("${ProfilePath}/tool-accessibility.svg"); }
            #context-inspect { background-image: url("${ProfilePath}/command-pick.svg"); }
            #context-copy { background-image: url("${ProfilePath}/edit-copy.svg"); }
    
            #context-searchselect { background-image: url("${ProfilePath}/search.svg"); }
            #context-viewpartialsource-selection { background-image: url("${ProfilePath}/document-search.svg"); }
    
            #context-openlinkincurrent { background-image: url("${ProfilePath}/link-square.svg"); }
    /*        #context-openlinkintab { background-image: url("${ProfilePath}/session.svg"); }    */
            #context-openlinkintab { background-image: url("${ProfilePath}/tab-open.svg"); }
    /*        #context-openlink { background-image: url("${ProfilePath}/window.svg"); }    */
            #context-openlink { background-image: url("${ProfilePath}/session.svg"); }
            #context-openlinkprivate { background-image: url("${ProfilePath}/privateBrowsing.svg"); }
            #context-bookmarklink { background-image: url("${ProfilePath}/folder-save.svg"); }
            #context-savelink { background-image: url("${ProfilePath}/image-add.svg"); }
            #context-print-selection { background-image: url("${ProfilePath}/printer.svg"); }
    
            #context-savelinktopocket { background-image: url("${ProfilePath}/image.svg"); }
            #context-copylink { background-image: url("${ProfilePath}/link.svg"); }
            #context-reloadimage { background-image: url("${ProfilePath}/reload.svg"); }
            #context-viewimage { background-image: url("${ProfilePath}/image-add.svg"); }
            #context-saveimage { background-image: url("${ProfilePath}/image.svg"); }
            #context-copyimage-contents  { background-image: url("${ProfilePath}/image-copy.svg"); }
            #context-copyimage { background-image: url("${ProfilePath}/image-resize.svg"); }
            #context-sendimage { background-image: url("${ProfilePath}/link.svg"); }
            #context-setDesktopBackground { background-image: url("${ProfilePath}/image-resize.svg"); }
    
            #_36bde3a5-9f17-4ad9-a587-d4a3c8e8d200_-menuitem-_background-tab_link { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACcklEQVRYR8WWzVEbQRBGtRHYHHy2iAAIgEJkIEdgcfbBEAEiAhcXrogITAbI5QAMVQ5gdfYBiEB8b6uHaq1md2ZXBk3VlHa0/fOmu6dni8GWR7Fl/4NWgOVyeSvAz5rHRVE8xWAls6//P7h3C8mWuRtLASzN0L2HkNOPWn/XnGgOI86QnwnkMgWSC4CdCkKTHf/UBCI1iMQXgaAbHV0AMIBBv+OF1qQJB7wDamwzpIXUnQgCubXRFcAbuJDRacyopYh3pIkBBHW0Fom+AHMZIx2tQyATCVybUCmd3bpCXwDsUGQnGRBE4tzkSMXM62wCkAVh6SglTE3cC+DgfwJgiyqPFlhwJIhTPf+w9a7vE6kIUDR7iTA3FqMDGOn5ztYU4zy8SwFwrDj3TeOp7Yx7JUUhNLUV4He7CzYGkIGhdsS9kDMe/N1hhfhoit0iYJcN+ctpvR5upsUZILJBd6R9MzrVALv+08N5ALkRwEQAwHzlT61X0p4qwql0QhO50PM8J/6SmQSH+j3U/G16FZC3kQIoJUzef0lxlOl8UMv5P+l9Mt2D+qlJAUSPTg6IIIjWkZO9lHMa0spoBJABdhxtHpkAPn1/SYU/GcFGG0Bj+8wE8Bv4JudXMb02gNCGn6Xc9QhWvlzz4a7gJlz7rnwFsMLhqEBO+x0acTR3mVGYSa46fhqlzbl+sVnBeAAvHOzzybUfI88EIHJEst5BXzflAULF4xRaFKd9nQdAiyz1RFSZwHCJ7dQj0PvI5UQDGcFM9VM1ttARYxEgR8y3GCMZZUYBCHvubbcp3EIRGNZTQH44Lm8NQY2NQ0t+tw+SppBtHeAFE7gPMJeICC4AAAAASUVORK5CYII="); }
    
            /* Rückgängig */
            #context-undo { background-image: url("${ProfilePath}/undo.svg"); }
            /* Wiederherstellen */
            #context-redo{ background-image: url("${ProfilePath}/sync.svg"); }
            /* Ausschneiden */
            #context-cut { background-image: url("${ProfilePath}/edit-cut.svg"); }
            /* Kopieren */
            #context-copy { background-image: url("${ProfilePath}/copy.svg"); }
            /* Einfügen */
            #context-paste { background-image: url("${ProfilePath}/paste.svg"); }
            /* Löschen */
            #context-delete { background-image: url("${ProfilePath}/delete.svg"); }
            /* Alles auswählen */
            #context-selectall { background-image: url("${ProfilePath}/select-all-on.svg"); }
            /* Rechtschreibung prüfen */
            #spell-check-enabled { background-image: url("${ProfilePath}/spell-check.svg"); }
    
    
            /* ----------------------------------------- */
            /* --------- Kontextmenüs der Tabs --------- */
            /* ----------------------------------------- */
    
            /* Neuer Tab */
    /*        #context_openANewTab { background-image: url("${ProfilePath}/session.svg"); }    */
            #context_openANewTab { background-image: url("${ProfilePath}/tab-open.svg"); }
            /* Tab neu laden */
            #context_reloadTab { background-image: url("${ProfilePath}/reload.svg"); }
            /* Tab stummschalten */
            #context_toggleMuteTab { background-image: url("${ProfilePath}/audio-muted.svg"); }
            /* Stummschaltung für Tab aufheben */
            #context_toggleMuteTab[muted] { background-image: url("${ProfilePath}/audio.svg"); }
            /* Tab anheften */
            #context_pinTab { background-image: url("${ProfilePath}/glyph-pin-16.svg"); }
            /* Tab klonen */
            #context_duplicateTab { background-image: url("${ProfilePath}/duplicat.svg"); }
            /* Tab als Lesezeichen hinzufügen */
            #context_bookmarkTab { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
            /* Tab verschieben */
            #context_moveTabOptions { background-image: url("${ProfilePath}/arrow-swap.svg"); }
            
                /* <<< Submenu_Tab verschieben >>> */    
            
                /* An Anfang verschieben */
                #context_moveToStart { background-image: url("${ProfilePath}/arrow-back.svg"); }
                /* An Ende verschieben */
                #context_moveToEnd { background-image: url("${ProfilePath}/arrow-forward.svg"); }
                /* In neues Fenster verschieben */
                #context_openTabInWindow { background-image: url("${ProfilePath}/session-restore.svg"); }    
            
            /* Teilen */
            .share-tab-url-item { display: none; }
            /* Alle Tabs auswählen */
            #context_selectAllTabs { background-image: url("${ProfilePath}/tab-multiple.svg"); }
            /* Tab schließen */
    /*        #context_closeTab { background-image: url("${ProfilePath}/stop.svg"); }    */
            #context_closeTab { background-image: url("${ProfilePath}/tab-close.svg"); }
            /*Mehrere Tabs schließen */
    /*        #context_closeTabOptions { background-image: url("${ProfilePath}/close-more.svg"); }    */
            #context_closeTabOptions { background-image: url("${ProfilePath}/tab-close.svg"); }
    
                /* <<< Submenu_Mehrere Tabs schließen >>> */
                
                /* Linke Tabs schließen */
    /*            #context_closeTabsToTheStart { background-image: url("${ProfilePath}/Sidebar-left.svg"); }    */
                #context_closeTabsToTheStart { background-image: url("${ProfilePath}/tab-left.svg"); }
                /* Rechte Tabs schließen */
    /*            #context_closeTabsToTheEnd { background-image: url("${ProfilePath}/Sidebar-right.svg"); }    */
                #context_closeTabsToTheEnd { background-image: url("${ProfilePath}/tab-right.svg"); }
                /* Andere Tabs schließen */
    /*            #context_closeOtherTabs { background-image: url("${ProfilePath}/right-left.svg"); }    */
                #context_closeOtherTabs { background-image: url("${ProfilePath}/tab-all.svg"); }
            
            /* Geschlossenen Tab wieder öffnen */
    /*        #context_undoCloseTab { background-image: url("${ProfilePath}/undo.svg"); }    */
            #context_undoCloseTab { background-image: url("${ProfilePath}/tab-restore"); }
    
            /* ================================================================ */
    
            /* Neuer Tab */
            #toolbar-context-openANewTab { background-image: url("${ProfilePath}/session.svg"); }
            /* Ausgewählten Tab neu laden */
            #toolbar-context-reloadSelectedTab { background-image: url("${ProfilePath}/reload.svg"); }
            /* Ausgewählten Tab als Lesezeichen hinzufügen... */
            #toolbar-context-bookmarkSelectedTab { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
            /* Alle Tabs auswählen */
            #toolbar-context-selectAllTabs { background-image: url("${ProfilePath}/tab-multiple.svg"); }
    
            /* Geschlossene Tabs wieder öffnen */
            #toolbar-context-undoCloseTab { background-image: url("${ProfilePath}/undo.svg"); }
    
            /* Symbolleiste anpassen... */
            menuitem.viewCustomizeToolbar { background-image: url("${ProfilePath}/Themes.svg"); }
    
            /* Lesezeichen-Symbolleiste */
            #toggle_PersonalToolbar { background-image: url("${ProfilePath}/bookmarks-toolbar.svg"); }
    
            /* --------------------------------------------- */
            /* - Kontextmenüs der Lesezeichen-Symbolleiste - */
            /* --------------------------------------------- */
    
            /* Löschen */
            #placesContext_delete { background-image: url("${ProfilePath}/delete.svg"); }
            /* Ausschneiden */
            #placesContext_cut { background-image: url("${ProfilePath}/edit-cut.svg"); }
            /* Kopieren */
            #placesContext_copy { background-image: url("${ProfilePath}/copy.svg"); }
            /* Einfügen */
            #placesContext_paste, #placesContext_paste_group { background-image: url("${ProfilePath}/paste.svg"); }
    
            /* Alle Lesezeichen öffnen */
            #placesContext_openBookmarkContainer\:tabs { background-image: url("${ProfilePath}/window-move.svg"); }
            /* Lesezeichen hinzufügen... */
            #placesContext_new\:bookmark { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
            /* Ordner hinzufügen... */
            #placesContext_new\:folder { background-image: url("${ProfilePath}/folder.svg"); }
            /* Trennlinie hinzufügen... */
            #placesContext_new\:separator { background-image: url("${ProfilePath}/vertical-line.svg"); }
    
            /* Lesezeichen verwalten */
            #placesContext_showAllBookmarks { background-image: url("${ProfilePath}/bookmarks-tray.svg"); }
            /* In neuem Tab öffnen */
            #placesContext_open\:newtab { background-image: url("${ProfilePath}/session.svg"); }
            /* In neuem Fenster öffnen */
            #placesContext_open\:newwindow { background-image: url("${ProfilePath}/window.svg"); }
            /* In neuem privaten Fenster öffnen */
            #placesContext_open\:newprivatewindow { background-image: url("${ProfilePath}/privateBrowsing.svg"); }
    
            /* Lesezeichen bearbeiten... */
            #placesContext_show_bookmark\:info { background-image: url("${ProfilePath}/edit.svg"); }
            /* Lesezeichen löschen */
            #placesContext_deleteBookmark { background-image: url("${ProfilePath}/delete.svg"); }
    
            /* ------------------------------------------ */
            /* ------- Kontextmenüs der Menuleise ------- */
            /* ------------------------------------------ */
    
            /* In Überhangmenü verschieben */
            .customize-context-moveToPanel { background-image: url("${ProfilePath}/glyph-pin-16.svg"); }
            /* Aus Symbolleiste entfernen */
            .customize-context-removeFromToolbar { background-image: url("${ProfilePath}/delete.svg"); }
    
            /* --------------------------------------------- */
            /* ------- Kontextmenüs in der Menuleise ------- */
            /* --------------------------------------------- */
    
            /* --- Datei --- */
    
            /* Neuer Tab */
    /*        #menu_newNavigatorTab { background-image: url("${ProfilePath}/session.svg"); }    */
            #menu_newNavigatorTab { background-image: url("${ProfilePath}/tab-open.svg"); }
            /* Neues Fenster */
    /*        #menu_newNavigator { background-image: url("${ProfilePath}/window.svg"); }    */
            #menu_newNavigator { background-image: url("${ProfilePath}/session.svg"); }
            /* Neues privates Fenster */
            #menu_newPrivateWindow { background-image: url("${ProfilePath}/privateBrowsing.svg"); }
            /* Datei öffnen... */
            #menu_openFile { background-image: url("${ProfilePath}//folder-open.svg"); }
            /* Seite speichern unter... */
            #menu_savePage { background-image: url("${ProfilePath}/folder-save.svg"); }
            /* Link per E-Mail senden... */
            #menu_sendLink { background-image: url("${ProfilePath}/mail.svg"); }
            /* Drucken... */
            #menu_print { background-image: url("${ProfilePath}/printer.svg"); }
            /* Daten aus einem anderen Browser importieren... */
            #menu_importFromAnotherBrowser { background-image: url("${ProfilePath}/import.svg"); }
            /* Offline arbeiten */
            #goOfflineMenuitem { background-image: url("${ProfilePath}/plug-disconnected.svg"); }
            /* Beenden */
            #menu_FileQuitItem { background-image: url("${ProfilePath}/quit.svg"); }
    
            /* --- Bearbeiten --- */
    
            /* Rückgängig */
            #menu_undo { background-image: url("${ProfilePath}/undo.svg"); }
            /* Wiederherstellen */
            #menu_redo { background-image: url("${ProfilePath}/sync.svg"); }
            /* Ausschneiden */
            #menu_cut { background-image: url("${ProfilePath}/edit-cut.svg"); }
            /* Kopieren */
            #menu_copy { background-image: url("${ProfilePath}/copy.svg"); }
            /* Einfügen */
            #menu_paste { background-image: url("${ProfilePath}/paste.svg"); }
            /* Löschen */
            #menu_delete { background-image: url("${ProfilePath}/delete.svg"); }
            /* Alles auswählen */
            #menu_selectAll { background-image: url("${ProfilePath}/select-all-on.svg"); }
            /* Seite durchsuchen... */
            #menu_find { background-image: url("${ProfilePath}/search.svg"); }
    
            /* --- Ansicht --- */
    
            /* Symbolleisten */
            #viewToolbarsMenu { background-image: url("${ProfilePath}/toolbar.svg"); }
            
                /* <<< Submenu_Symbolleisten >>> */
                
                #toggle_PersonalToolbar { background-image: url("${ProfilePath}/bookmarks-toolbar.svg"); }
                #menu_customizeToolbars { background-image: url("${ProfilePath}/Themes.svg"); }    
    
                /* ----------------------------------- */
                /* -- Checkbox und Haken im Submenu -- */
                /* ----------------------------------- */
    
                menuitem[checked="true"] > .menu-iconic-left {
                    list-style-image: url("${ProfilePath}/check.svg");
                    fill: #00E400 !important;
                }
    
                [data-l10n-id="toolbar-context-menu-bookmarks-toolbar-always-show-2"]:not([checked="true"]),
                [data-l10n-id="toolbar-context-menu-bookmarks-toolbar-on-new-tab-2"]:not([checked="true"]),
                [data-l10n-id="toolbar-context-menu-bookmarks-toolbar-never-show-2"]:not([checked="true"]),
                #menu_zoomReset:not([checked="true"]),
                #toggle_zoom:not([checked="true"]),
                #menu_pageStylePersistentOnly:not([checked="true"]) {
                    background-image: url("${ProfilePath}/square.svg");
                    background-repeat: no-repeat;
                }
    
                /* ----------------------------------- */
    
            /* Sidebar */
            #viewSidebarMenuMenu { background-image: url("${ProfilePath}/Dock Side Left.svg"); }
    
                /* <<< Submenu_Sidebar >>> */
    
                #menu_bookmarksSidebar:not([checked="true"]) { 
                    background-image: url("${ProfilePath}/bookmark.svg"); 
                    background-repeat: no-repeat;
                }
                #menu_historySidebar:not([checked="true"]) { 
                    background-image: url("${ProfilePath}/history.svg"); 
                    background-repeat: no-repeat;
                }
                #menu_tabsSidebar:not([checked="true"]) { 
                    background-image: url("${ProfilePath}/Dock Side Left.svg"); 
                    background-repeat: no-repeat;
                }
    
            /* Zoom */
            #viewFullZoomMenu { background-image: url("${ProfilePath}/screenshot.svg"); }
            
                /* <<< Submenu_Zoom >>> */
    
                #menu_zoomEnlarge { background-image: url("${ProfilePath}/zoom-in.svg"); }    /*  +  */
                #menu_zoomReduce { background-image: url("${ProfilePath}/zoom-out.svg"); }    /*  -  */
            
            /* Webseiten-Stil */
            #pageStyleMenu { background-image: url("${ProfilePath}/document-css.svg"); }
            
                /* <<< Submenu_Webseiten-Stil >>> */
            
                #menu_pageStyleNoStyle:not([checked="true"]) { 
                    background-image: url("${ProfilePath}/document-css.svg"); 
                    background-position: left 1em center;
                    background-repeat: no-repeat;
                }    
            
            /* Textkodierung reparieren */
            #repair-text-encoding { background-image: url("${ProfilePath}/characterEncoding.svg"); }
            /* Vollbild */
            #fullScreenItem { background-image: url("${ProfilePath}/fullscreen.svg"); }
    
            /* --- Chronik --- */
    
            /* Gesamte Chronik anzeigen */
            #menu_showAllHistory { background-image: url("${ProfilePath}/history.svg"); }
            /* Neueste Chronik löschen... */
            #sanitizeItem { background-image: url("${ProfilePath}/history-forget.svg"); }
            /* Vorherige Sitzung wiederherstellen */
            #historyRestoreLastSession { background-image: url("${ProfilePath}/session-restore.svg"); }
            /* Chronik durchsuchen */
            #menu_searchHistory { background-image: url("${ProfilePath}/window-search.svg"); }
            /* Kürzlich geschlossene Tabs */
    /*        #historyUndoMenu { background-image: url("${ProfilePath}/tab.svg"); }    */
            #historyUndoMenu { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACcklEQVRYR8WWzVEbQRBGtRHYHHy2iAAIgEJkIEdgcfbBEAEiAhcXrogITAbI5QAMVQ5gdfYBiEB8b6uHaq1md2ZXBk3VlHa0/fOmu6dni8GWR7Fl/4NWgOVyeSvAz5rHRVE8xWAls6//P7h3C8mWuRtLASzN0L2HkNOPWn/XnGgOI86QnwnkMgWSC4CdCkKTHf/UBCI1iMQXgaAbHV0AMIBBv+OF1qQJB7wDamwzpIXUnQgCubXRFcAbuJDRacyopYh3pIkBBHW0Fom+AHMZIx2tQyATCVybUCmd3bpCXwDsUGQnGRBE4tzkSMXM62wCkAVh6SglTE3cC+DgfwJgiyqPFlhwJIhTPf+w9a7vE6kIUDR7iTA3FqMDGOn5ztYU4zy8SwFwrDj3TeOp7Yx7JUUhNLUV4He7CzYGkIGhdsS9kDMe/N1hhfhoit0iYJcN+ctpvR5upsUZILJBd6R9MzrVALv+08N5ALkRwEQAwHzlT61X0p4qwql0QhO50PM8J/6SmQSH+j3U/G16FZC3kQIoJUzef0lxlOl8UMv5P+l9Mt2D+qlJAUSPTg6IIIjWkZO9lHMa0spoBJABdhxtHpkAPn1/SYU/GcFGG0Bj+8wE8Bv4JudXMb02gNCGn6Xc9QhWvlzz4a7gJlz7rnwFsMLhqEBO+x0acTR3mVGYSa46fhqlzbl+sVnBeAAvHOzzybUfI88EIHJEst5BXzflAULF4xRaFKd9nQdAiyz1RFSZwHCJ7dQj0PvI5UQDGcFM9VM1ttARYxEgR8y3GCMZZUYBCHvubbcp3EIRGNZTQH44Lm8NQY2NQ0t+tw+SppBtHeAFE7gPMJeICC4AAAAASUVORK5CYII="); }
            /* Kürzlich geschlossene Fenster */
            #historyUndoWindowMenu { background-image: url("${ProfilePath}/window.svg"); }
    
            /* Lesezeichen */
    
            /* Lesezeichen verwalten */
            #bookmarksShowAll { background-image: url("${ProfilePath}/bookmarks-tray.svg"); }
            /* Aktuellen Tab als Lesezeichen hinzufügen */
            #menu_bookmarkThisPage { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
            /* Lesezeichen durchsuchen */
            #menu_searchBookmarks { background-image: url("${ProfilePath}/search.svg"); }
            /* Lesezeichen-Symbolleiste */
            #bookmarksToolbarFolderMenu { list-style-image: url("${ProfilePath}/bookmarksToolbar.svg"); }
            /* Weitere Lesezeichen */
            #menu_unsortedBookmarks { list-style-image: url("${ProfilePath}/mail-inbox-all.svg") }
    
            /* --- Extras --- */
    
            /* Downloads */
            #menu_openDownloads { background-image: url("${ProfilePath}/downloads.svg"); }
            /* Add-ons und Themes */
            #menu_openAddons { background-image: url("${ProfilePath}/addons.svg"); }
            /* Firefox View */
            #menu_openFirefoxView { background-image: url("${ProfilePath}/firefox.svg"); }
            /* Anmelden */
            #sync-setup { background-image: url("${ProfilePath}/avatar-empty.svg"); }
            /* Browser-Werkzeuge */
            #browserToolsMenu { background-image: url("${ProfilePath}/debugging-workers.svg"); }
            
                /* <<< Submenu_Browser-Werkzeuge >>> */    
    
                /* Werkzeuge für Web-Entwickler */
                #menu_devToolbox { background-image: url("${ProfilePath}/developer.svg"); }
                /* Task-Manager */
                #menu_taskManager { background-image: url("${ProfilePath}/performance.svg"); }
                /* Externes Debugging */
                #menu_devtools_remotedebugging { background-image: url("${ProfilePath}/bug.svg"); }
                /* Browser-Werkzeuge */
                #menu_browserToolbox { background-image: url("${ProfilePath}/window-dev-tools.svg"); }
                /* Browser-Inhaltswerkzeuge */
                #menu_browserContentToolbox { background-image: url("${ProfilePath}/command-frames.svg"); }
                /* Browser-Konsole */
                #menu_browserConsole { background-image: url("${ProfilePath}/command-console.svg"); }
                /* Bildschirmgrößen testen */
                #menu_responsiveUI { background-image: url("${ProfilePath}/command-responsivemode.svg"); }
                /*Farbpipette */
                #menu_eyedropper { background-image: url("${ProfilePath}/command-eyedropper.svg"); }
                /* Seitenquelltext anzeigen */
                #menu_pageSource { background-image: url("${ProfilePath}/document-search.svg"); }
                /* Erweiterungen für Entwickler */
                #extensionsForDevelopers { background-image: url("${ProfilePath}/addons.svg"); }    
            
            /* Seiteninformationen */
            #menu_pageInfo { background-image: url("${ProfilePath}/document-endnote.svg"); }
            /* Einstellungen */
            #menu_preferences { background-image: url("${ProfilePath}/settings.svg"); }
    
            /* --- Hilfe --- */
    
            /* Hilfe erhalten */
            #menu_openHelp { background-image: url("${ProfilePath}/help.svg"); }
            /* Ideen und Feedback teilen... */
            #feedbackPage { background-image: url("${ProfilePath}/send.svg"); }
            /* Fehlerbehebungsmodus... */
            #helpSafeMode { background-image: url("${ProfilePath}/debugging-workers.svg"); }
            /* Weitere Informationen zur Fehlerbehebung */
            #troubleShooting { background-image: url("${ProfilePath}/more.svg"); }
            /* Betrügerische Website melden... */
            #menu_HelpPopup_reportPhishingtoolmenu { background-image: url("${ProfilePath}/warning.svg"); }
            /* Zu einem neuen Gerät wechseln */
            #helpSwitchDevice { background-image: url("${ProfilePath}/send-to-device.svg"); }
            /* Über Firefox */
            #aboutName { background-image: url("${ProfilePath}/firefox.svg"); }
    
            /* ---------------------------------------------- */
            /* ------------- Kontextmenü Frames ------------- */
            /* ---------------------------------------------- */
            
            /* Aktueller Frame */
            #frame { background-image: url("${ProfilePath}/command-frames.svg"); }
    
                /* <<< Submenu_Aktueller Frame >>> */    
    
                /* Nur diesen Frame anzeigen */
                #context-showonlythisframe { background-image: url("${ProfilePath}/tab.svg"); }
                /* Frame in neuem Tab öffnen */
                #context-openframeintab { background-image: url("${ProfilePath}/open-in-new.svg"); }
                /* Frame in neuem Fenster öffnen */
                #context-openframe { background-image: url("${ProfilePath}/window.svg"); }
                /* Frame neu laden */
                #context-reloadframe { background-image: url("${ProfilePath}/reload.svg"); }
                /*Lesezeichen für diesen Frame hinzufügen */
                #context-bookmarkframe { background-image: url("${ProfilePath}/bookmark-hollow.svg"); }
                /*Frame speichern unter... */
                #context-saveframe { background-image: url("${ProfilePath}/folder-save.svg"); }
                /* Frame drucken... */
                #context-printframe { background-image: url("${ProfilePath}/printer.svg"); }
                /* Bildschirmfoto aufnehmen */
                #context-take-frame-screenshot { background-image: url("${ProfilePath}/screenshot.svg"); }
                /* Frame-Quelltext anzeigen */
                #context-viewframesource { background-image: url("${ProfilePath}/document-search.svg"); }
                /* Frame-Informationen anzeigen */
                #context-viewframeinfo { background-image: url("${ProfilePath}/info.svg"); }
    
            /* ---------------------------------------------- */
            /* ----------- Kontextmenü Adressfeld ----------- */
            /* ---------------------------------------------- */
            /*    
            #urlbar-input-container {
                padding-inline-start: calc(1em + 24px) !important;
                background-position: left 1em center;
                background-repeat: no-repeat;
                background-size: 16px;
                -moz-context-properties: fill, fill-opacity;
                fill: currentColor;
            }
            */
            /* Rückgängig */
            #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_undo"] {
                background-image: url("${ProfilePath}/undo.svg");
            }
            /* Wiederherstellen */
            #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_redo"] {
                background-image: url("${ProfilePath}/sync.svg");
            }
            /* Ausschneiden */
            #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_cut"] {
                background-image: url("${ProfilePath}/edit-cut.svg");
            }
            /* Kopieren */
            #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_copy"] {
                background-image: url("${ProfilePath}/copy.svg");
            }
            /* Einfügen */
            #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_paste"] {    
                background-image: url("${ProfilePath}/paste.svg");
            }
            /* Einfügen & Los */
            #paste-and-go {
                background-image: url("${ProfilePath}/redo.svg");
            }
            /* Löschen */
            #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_delete"] {
                background-image: url("${ProfilePath}/delete.svg");
            }
            /* Alles auswählen */
            #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_selectAll"] {
                background-image: url("${ProfilePath}/select-all-on.svg");
            }
    
            /* ------------------------------------------- */
            /* ---------- Symbole der Menuleise ---------- */
            /* ------------------------------------------- */
    
            /* Datei  */
            #file-menu::before { background: url("${ProfilePath}/mail-inbox-all.svg")!important; }
            /* Bearbeiten  */
            #edit-menu::before { background: url("${ProfilePath}/edit.svg")!important; }
            /* Ansicht  */
            #view-menu::before { background: url("${ProfilePath}/content-view.svg")!important; }
            /* Chronik  */
            #history-menu::before { background: url("${ProfilePath}/history.svg")!important; }
            /* Lesezeichen  */
            #bookmarksMenu::before { background: url("${ProfilePath}/bookmark.svg")!important; }
            /* Extras  */
            #tools-menu::before { background: url("${ProfilePath}/toolbox.svg")!important; }
            /* Hilfe  */
            #helpMenu::before { background: url("${ProfilePath}/help.svg")!important; }
    
            /* Einstellungen  */
            #file-menu::before,
            #edit-menu::before,
            #view-menu::before,
            #history-menu::before,
            #bookmarksMenu::before,
            #tools-menu::before,
            #helpMenu::before {
                margin-left: 6px !important;
                content: '' !important;
                display: block !important;
                width: 16px !important;
                height: 16px !important;
                background-repeat: no-repeat !important;
                -moz-context-properties: fill, fill-opacity;
                fill: currentColor;
            }
            #menu_FilePopup,
            #menu_EditPopup,
            #menu_viewPopup,
            #historyMenuPopup,
            #bookmarksMenuPopup,
            #menu_ToolsPopup,
            #menu_HelpPopup {
                margin-top: 5px !important;
            }
    
            /* ------------------------------------ */
            /* *** neuer Button "Erweiterungen" *** */
            /* ******* Symbole im Popup-Menü ****** */
            /* ------------------------------------ */
    
            .unified-extensions-context-menu-pin-to-toolbar {   
                background: url("${ProfilePath}/glyph-pin-16.svg") no-repeat !important;
                background-position: 9px 4px !important;
            }
            .unified-extensions-context-menu-move-widget-up {   
                background: url("${ProfilePath}/Pfeil-hoch_hellgrau.svg") no-repeat !important;
                background-position: 6px 0px !important;
            }
            .unified-extensions-context-menu-move-widget-down {   
                background: url("${ProfilePath}/Pfeil-runter_hellgrau.svg") no-repeat !important;
                background-position: 6px 0px !important;
            }
            .unified-extensions-context-menu-manage-extension {
                background: url("${ProfilePath}/extension.svg") no-repeat !important;
                background-position: 9px 4px !important;
            }
    
            .unified-extensions-context-menu-remove-extension {
                background: url("${ProfilePath}/delete.svg") no-repeat !important;
                background-position: 9px 4px !important;
            }
    
            .unified-extensions-context-menu-report-extension {
                background: url("${ProfilePath}/warning.svg") no-repeat !important;
                background-position: 9px 4px !important;
            }
    
            /* ---------------------------------------------- */
            /* ------------- Kontextmenü Video -------------- */
            /* ---------------------------------------------- */
    
            /* Pause */
            #context-media-pause { background-image: url("${ProfilePath}/pause-1.svg"); }
            /* Abspielen */
            #context-media-play { background-image: url("${ProfilePath}/play-1.svg"); }
            /* Ton aus */
            #context-media-mute { background-image: url("${ProfilePath}/audio-16-mute.svg"); }
            /* Ton an */
            #context-media-unmute { background-image: url("${ProfilePath}//audio-16.svg"); }
            /* Geschwindigkeit */
            #context-media-playbackrate { background-image: url("${ProfilePath}/performance-16.svg"); }
            /* Endlosschleife */
            #context-media-loop { background-image: url("${ProfilePath}/repeat-1.svg"); }
            /* Vollbild */
            #context-video-fullscreen { background-image: url("${ProfilePath}/maximize-1.svg"); }
            /* Vollbild beenden */
            #context-leave-dom-fullscreen { background-image: url("${ProfilePath}/minimize-1.svg"); }
            /* Steuerung ausblenden    ! */
            #context-media-hidecontrols { display: none !important; }
            /* Steuerung anzeigen    ! */
            #context-media-showcontrols { display: none !important; }
    
            /* -------------------------- */
    
            /* Video in neuem Tab öffnen */
            #context-viewvideo { background-image: url("${ProfilePath}/session.svg");; }
            /* In Bild-im-Bild ansehen */
            #context-video-pictureinpicture { background-image: url("${ProfilePath}/info.svg"); }
    
            /* -------------------------- */
    
            /* Standbild aufnehmen...    ! */
            #context-video-saveimage { display: none !important; } 
            /* Video speichern unter...    ! */
            #context-savevideo { display: none !important; }
            /* Video-Adresse kopieren    ! */
            #context-copyvideourl { display: none !important; }
            /* Video per E-Mail senden...    ! */
            #context-sendvideo { display: none !important; }
    
            #context-sep-setbackground { display: none !important; }
    
    
            .bookmark-item[container] {
                list-style-image: url("${ProfilePath}/folder-fat.svg") !important;
              }
    
    
            `), null, null);
    
    //   `;
    //
    //   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);
    
    })();
    Alles anzeigen

    Und hier das CSS für die Bibliothek:

    CSS
    @-moz-document url-prefix("chrome://browser/content/downloads/contentAreaDownloadsView.xhtml"),
                   url-prefix("chrome://browser/content/places/places.xhtml") {
    
            /* ---------------------------------------------- */
            /* ---------- Kontextmenüs Bibliothek ----------- */
            /* ---------------------------------------------- */
    
        /* Öffnen */
        #placesContext_open { background-image: url("../icons/open.svg"); }
        /* Alle Lesezeichen öffnen */
        #placesContext_openBookmarkContainer\:tabs { background-image: url("../icons/bookmark.svg"); }
        /* In neuem Tab öffnen */
        #placesContext_open\:newtab { background-image: url("../icons/tab-open.svg"); }
        /* In neuem Tab in Umgebung öffnen */
    /*    #placesContext_open\:newcontainertab { background-image: url("../icons/default-browser-red.svg"); }   */
        /* Alle in Tabs öffnen */
        #placesContext_openContainer\:tabs { background-image: url("../icons/bookmark.svg"); }
        /* In neuem Fenster öffnen */
        #placesContext_open\:newwindow { background-image: url("../icons/session.svg"); }
        /* In neuem privaten Fenster öffnen */
        #placesContext_open\:newprivatewindow { background-image: url("../icons/privateBrowsing.svg"); }
        /* In Ordner anzeigen */
        #placesContext_showInFolder { background-image: url("../icons/default-browser-red.svg"); }
        /* Lesezeichen löschen */
        #placesContext_deleteBookmark { background-image: url("../icons/delete.svg"); }
        /* Schlagwort entfernen */
        #placesContext_removeTag { background-image: url("../icons/delete.svg"); }
        /* Ordner löschen */
        #placesContext_deleteFolder { background-image: url("../icons/delete.svg"); }
        /* Löschen*/
        #placesContext_delete { background-image: url("../icons/delete.svg"); }
        /* Seite entfernen */
        #placesContext_delete_history { background-image: url("../icons/delete.svg"); }
        /* Gesamte Website vergessen */
        #placesContext_deleteHost { background-image: url("../icons/delete.svg"); }
        /* Nach Name sortieren */
        #placesContext_sortBy\:name { background-image: url("../icons/arrow-down-a-z.svg"); }
        /* Ausschneiden */
        #placesContext_cut { background-image: url("../icons/edit-cut.svg"); }
        /* Kopieren */
        #placesContext_copy { background-image: url("../icons/copy.svg"); }
        /* Einfügen */
        #placesContext_paste_group { background-image: url("../icons/paste.svg"); }
        /* Lesezeichen hinzufügen… */
        #placesContext_new\:bookmark { background-image: url("../icons/book-add.svg"); }
        /* Ordner hinzufügen… */
        #placesContext_new\:folder { background-image: url("../icons/folder-new.svg"); }
        /* Trennlinie hinzufügen */
        #placesContext_new\:separator { background-image: url("../icons/horizontal-line.svg"); }
        /* Lesezeichen für Seiten hinzufügen… */
        #placesContext_createBookmark { background-image: url("../icons/bookmark-hollow.svg"); }
        /* Lesezeichen verwalten */
        #placesContext_showAllBookmarks { background-image: url("../icons/default-browser-red.svg"); }
        /* In neuem Tab in Umgebung öffnen (ausgeblendet)*/
        #placesContext_open\:newcontainertab { display: none !important; }
        /* Ähnliche Dateien immer öffnen */
        .downloadAlwaysOpenSimilarFilesMenuItem { background-image: url("../icons/similar-files-open.svg"); }
        /* In Firefox öffnen */
        .downloadUseSystemDefaultMenuItem { background-image: url("../icons/firefox.svg"); }
        /* Immer in Firefox öffnen */
        .downloadAlwaysUseSystemDefaultMenuItem { background-image: url("../icons/firefox.svg"); }
        /* In Ordner anzeigen */
        .downloadShowMenuItem { background-image: url("../icons/open.svg"); }
        /* Download-Link kopieren */
        .downloadCopyLocationMenuItem { background-image: url("../icons/link.svg"); }
        /* Löschen */
        .downloadDeleteFileMenuItem { background-image: url("../icons/delete.svg"); }
        /* Aus Chronik entfernen */
        .downloadRemoveFromHistoryMenuItem { background-image: url("../icons/delete.svg"); }
        /* Liste leeren */
        /* #downloadsContextMenu > menuitem:nth-child(14) { background-image: url("../icons/default-browser-red.svg"); }    */
        [data-l10n-id="downloads-cmd-clear-downloads"] { background-image: url("../icons/clear-list.svg"); }
    
        /* Zur Download-Seite gehen */
        .downloadOpenReferrerMenuItem { background-image: url("../icons/default-browser-red.svg"); }
        /* Pause */
        .downloadPauseMenuItem { background-image: url("../icons/circle-pause.svg"); }
        /* Fortsetzen*/
        .downloadResumeMenuItem { background-image: url("../icons/circle-play.svg"); }
    
    }
    Alles anzeigen


    Und die "neuen" Grafiken dürfen auch nicht fehlen!

    icons.zip

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

    • Mira_Belle
    • 12. September 2023 um 10:27

    lenny2

    Es tut mir leid Dir dann mitteilen zu müssen, dass dann irgendwo, irgendwie sich Code, wie auch immer, beharkt!

    Du wirst nicht um hinkommen, eine genaue Fehleranalyse zu machen, was bedeutet, dass Du erst einmal

    allen Code "ausschaltest" bis auch das Script für die Scrolleiste(n).

    Und nach und nach einen Code, nach dem anderen wieder aktivierst und schaust, ob der Fehler wieder auftritt.

    Wenn entsprechende Datei gefunden ist, hier posten und wir können schauen, wo es klemmt.

    Zitat von Speravir
    Zitat von Mira_Belle

    Bitte testen und berichten!

    Was genau hast Du geändert?

    Es ist ein etwas anderes Script, Änderungen kannst Du, wenn Du magst, in der Historie nach verfolgen.

    Denn so genau weiß ich jetzt aus dem Effeff auch nicht mehr, was da anders ist.

    Ich müsste die Dateien also erst einmal direkt miteinander vergleichen.

Unterstütze uns!

Jährlich (2026)

69,4 %

69,4% (538,17 von 775 EUR)

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