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

  • Der Glückwunsch-Thread

    • Mira_Belle
    • 11. Februar 2026 um 22:51

    <3lichen Glückwunsch und alles Liebe und Gute.

  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 11. Februar 2026 um 22:01

    Endor
    Da für mich die Symbole fest zum Skript gehören,
    habe ich das CSS auch da reingepackt!
    Und was ich über base64 denke, ist bekannt.

    Also ganz einfach folgenden Code ans Ende des Skripts einfügen.

    CSS
      }, 30000);
    
      let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'image'));
    
      let css =`
    
        #wetterfuchs-toolbarbutton .toolbarbutton-menu-dropmarker {
          display: none ! important;
        }   
      
        /* Gemeinsame Basis für ALLE menu/menuitem-Elemente in diesem Kontext */
        menu[label^="DE Wetter"],
        menu[label^="DE Wetter"] menuitem,
        menu[label="DE Wetterkarten"],
        menu[label="DE Wetterkarten"] menuitem,
        menu[label="EU Wetter"],
        menu[label="EU Wetter"] menuitem,
        menu[label="Welt Wetter"],
        menu[label="Welt Wetter"] menuitem,
        menu[label="Blitzortung"],
        menu[label="Blitzortung"] menuitem,
        menu[label="Regionales Wetter"],
        menu[label="Regionales Wetter"] menuitem {
          appearance: none !important;
          background-position: 4px 50% !important;
          background-repeat: no-repeat !important;
        }
    
        /* Hover-Effekt zentral */
        /*
        menu[label^="DE Wetter"]:hover,
        menu[label^="DE Wetter"] menuitem:hover,
        menu[label="DE Wetterkarten"]:hover,
        menu[label="DE Wetterkarten"] menuitem:hover,
        menu[label="EU Wetter"]:hover,
        menu[label="EU Wetter"] menuitem:hover,
        menu[label="Welt Wetter"]:hover,
        menu[label="Welt Wetter"] menuitem:hover,
        menu[label="Blitzortung"]:hover,
        menu[label="Blitzortung"] menuitem:hover,
        menu[label="Regionales Wetter"]:hover,
        menu[label="Regionales Wetter"] menuitem:hover {
          background-color: #ecf0f6  !important;
        }
        */
        menu[label="DE Wetterdaten"] { background-image: url("${ProfilePath}/Wetterdaten_1.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Wetter aktuell"] { background-image: url("${ProfilePath}/Wetterdaten_2.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Vorhersage"] { background-image: url("${ProfilePath}/Wetterdaten_3.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Pollenbelastung"] { background-image: url("${ProfilePath}/Wetterdaten_4.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Wetterlage"] { background-image: url("${ProfilePath}/Wetterdaten_5.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="UV-Index"] { background-image: url("${ProfilePath}/Wetterdaten_6.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Gesund. Beschwerden"] { background-image: url("${ProfilePath}/Wetterdaten_7.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Thermische Belastung"] { background-image: url("${ProfilePath}/Wetterdaten_8.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Flusspegel"] { background-image: url("${ProfilePath}/Wetterdaten_9.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Regenradar"] { background-image: url("${ProfilePath}/Wetterdaten_10.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Regenradar Vorhersage"] { background-image: url("${ProfilePath}/Wetterdaten_11.png") !important; }
        menu[label="DE Wetterdaten"] menuitem[label="Satellitenbild"] { background-image: url("${ProfilePath}/Wetterdaten_12.png") !important; }
    
        menu[label="DE Wetterkarten"] { background-image: url("${ProfilePath}/Wetterkarten_1.png") !important; }
        menu[label="DE Wetterkarten"] menuitem[label="Wetter aktuell"] { background-image: url("${ProfilePath}/Wetterkarten_2.png") !important; }
        menu[label="DE Wetterkarten"] menuitem[label="Vorhersage"] { background-image: url("${ProfilePath}/Wetterkarten_3.png") !important; }
        menu[label="DE Wetterkarten"] menuitem[label="Unwetterwarnung"] { background-image: url("${ProfilePath}/Wetterkarten_4.png") !important; }
        menu[label="DE Wetterkarten"] menuitem[label="Regenradar aktuell"] { background-image: url("${ProfilePath}/Wetterkarten_5.png") !important; }
        menu[label="DE Wetterkarten"] menuitem[label="Regenradarprognose"] { background-image: url("${ProfilePath}/Wetterkarten_6.png") !important; }
    
        menu[label="EU Wetter"] { background-image: url("${ProfilePath}/Wetter_1.png") !important; }
        menu[label="EU Wetter"] menuitem[label="Aktuell und Vorhersage"] { background-image: url("${ProfilePath}/Wetter_2.png") !important; }
        menu[label="EU Wetter"] menuitem[label="Regenradar aktuell"] { background-image: url("${ProfilePath}/Wetter_3.png") !important; }
        menu[label="EU Wetter"] menuitem[label="Unwetterwarnung"] { background-image: url("${ProfilePath}/Wetter_4.png") !important; }
        menu[label="EU Wetter"] menuitem[label="Regenradarprognose"] { background-image: url("${ProfilePath}/Wetter_5.png") !important; }
    
        menu[label="Welt Wetter"] { background-image: url("${ProfilePath}/Welt_1.png") !important; }
        menu[label="Welt Wetter"] menuitem[label="Aktuell"] { background-image: url("${ProfilePath}/Welt_2.png") !important; }
        menu[label="Welt Wetter"] menuitem[label="Vorhersage"] { background-image: url("${ProfilePath}/Welt_3.png") !important; }
    
        menu[label="Blitzortung"] { background-image: url("${ProfilePath}/Blitz_1.png") !important; }
        menu[label="Blitzortung"] menuitem[label="Mitteleuropa"] { background-image: url("${ProfilePath}/Blitz_2.png") !important; }
        menu[label="Blitzortung"] menuitem[label="Europa"] { background-image: url("${ProfilePath}/Blitz_3.png") !important; }
        menu[label="Blitzortung"] menuitem[label="Welt"] { background-image: url("${ProfilePath}/Blitz_4.png") !important; }
    
        menu[label="Regionales Wetter"] { background-image: url("${ProfilePath}/Regio_1.png") !important; }
        menu[label="Regionales Wetter"] menuitem[label="Aktuell und Vorhersage"] { background-image: url("${ProfilePath}/Regio_2.png") !important; }
        menu[label="Regionales Wetter"] menuitem[label="Unwetterwarnung"] { background-image: url("${ProfilePath}/Regio_3.png") !important; }
        menu[label="Regionales Wetter"] menuitem[label="Regenradar aktuell"] { background-image: url("${ProfilePath}/Regio_4.png") !important; }
        menu[label="Regionales Wetter"] menuitem[label="Regenradarprognose"] { background-image: url("${ProfilePath}/Regio_5.png") !important; }
    
      `;
    
      const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
      const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
      sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
    
    })();
    Alles anzeigen

    Die Grafiken gehören in den Ordner "image" unter "chrome":!:

    images.zip

  • Nach Upgrade auf Version 147.0.3 werden manche Webseites, die über einen Link aktiviert werden sollen, nicht richtig angezeigt

    • Mira_Belle
    • 9. Februar 2026 um 20:03

    REisele Also hier bei mir wird der Link im FF ganz normal geöffnet!
    Soll aber nichts heißen.

    Ich vermute, Du hast bei irgendeinem Onlineanbieter Dein E-Mailpostfach eingerichtet.
    Was passiert, wenn Du Dich da direkt einloggst und Deine E-Mail abrufst, bzw. öffnest und
    da den Link anklickst?

    Wenn es funktioniert, mal ein alternatives E-Mailprogramm ausprobieren.
    Eventuell gibt es ja eines, dass portable funktioniert, das ja nur erst einmal für einen Test!

    Ergänzung!
    Gibt es!
    Internet | PortableApps.com
    Runterscrollen zu den E-Mail-Clients.

    Bitte aber diese Äpps nicht dauerhaft nutzen!
    Die sind alle total veraltet.
    Es soll ja nur getestet werden, ob Dein installierter Thunderbird den Link irgendwie falsch an den Firefox übergibt!

    Als Gegentest könntest Du auch kurzzeitig mal einen anderen Browser auf Standard setzen.

  • Desktop-Ordner "Alte Firefox Daten" lässt sich nicht löschen

    • Mira_Belle
    • 8. Februar 2026 um 17:12

    AMW81 Such mal im Netz nach dem kleinen Tool "Unlocker".

    Oh, sehe grade, ich habe einen Link.
    UNLOCKER 1.9.2 BY CEDRICK 'NITCH' COLLOMB

    Weiter unten gibt es sogar eine portable Version.

  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • Mira_Belle
    • 8. Februar 2026 um 16:50

    TheRave Danke für den Link,
    siehste, da bin ich doch falsch gewesen, mir meiner "137",
    und Deiner Erklärung.

  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • Mira_Belle
    • 8. Februar 2026 um 14:28
    Zitat von Sören Hentzschel

    Da blickt niemand mehr durch – wie ja auch die Nachfrage zeigt.

    Mh, ok, nehmen wir an, es ist so, TheRaves Information bezieht sich auf das "tote" Skript aus Beitrag #1.
    Dennoch ist es so, dass es hier in diesem Thread mittlerweile drei Versionen für ein Skript für die Tabs gibt.
    Daher meine, so finde ich, berechtigte Frage und Anmerkung.
    Und bevor es nun eskaliert oder irgendwie drüber und drunter geht, bin ich jetzt raus!
    Soll ein jeder mit der Information von TheRave machen, was er/sie will.

  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • Mira_Belle
    • 8. Februar 2026 um 14:09

    Und so ganz nebenbei würde hier in diesem Thread ja auch das Skript von Merci chao vorgestellt,
    der Link in dem Beitrag wurde dann aber wieder gelöscht.
    Aber Merci chao hat sich ja direkt hier gemeldet und es wieder verlinkt!
    Im Übrigen hat er vor zwei Tagen sein Skript überarbeitet. ;)

    Eigentlich finde ich es nicht so schlimm, wenn es hier um ähnliche Skripte geht, man sollte halt nur auf jenes,
    auf das eine Information verweist, auch entweder verlinken oder es hier dann halt mit den Korrekturen neu posten.

  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • Mira_Belle
    • 8. Februar 2026 um 13:11
    Zitat von TheRave

    Für alle Nutzer des scripts von Alice0775

    Diese Information ist schon sehr gut, aber besser wäre z.B. ein direkter Link auf das betreffende Skript gewesen.
    So muss jemand, der das Skript noch nicht nutzt, sich erst einen Wolf suchen, um es ausprobieren zu können.
    Finde ich. ;)

    Nachtrag.
    Auf "https://github.com/alice0775/userChrome.js" ist leider nur eine verdammt alte Version zu finden!
    Endor scheint da eine etwas aktueller Version vorzuhalten.

    userChrome.js/Multirowtabs/Firefox 134/MultiRowTabLiteforFx.uc.js at master · Endor8/userChrome.js
    Skripte für die Firefox-Erweiterung userChromeJS. Contribute to Endor8/userChrome.js development by creating an account on GitHub.
    github.com


    Aber ich vermute jetzt mal, hier on Board gibt es bestimmt noch etwas Aktuelleres,
    auf das sich dann Deine Information bezieht, oder?

  • Nach Upgrade auf Version 147.0.3 werden manche Webseites, die über einen Link aktiviert werden sollen, nicht richtig angezeigt

    • Mira_Belle
    • 8. Februar 2026 um 13:03
    Zitat von REisele

    In der Linkdefinition steht diese URL

    Zitat von 2002Andreas

    Sieht hier so aus damit:

    Kann ich bestätigen!

  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 7. Februar 2026 um 17:22

    Sorry, ich konnte nicht anders!
    Ich finde die Aufteilung so im Skript einfach besser
    und Symbole erst zu generieren, bzw. zu laden finde ich auch nicht so dolle.

    Also ist DAS dabei herausgekommen:

    CSS
    // ==UserScript==
    // @name           wetterfuchsbutton.uc.js
    // @compatibility  Firefox 147+
    // @include        main
    // @note           by mira with help from www.perplexity.ai and chat.mistral.ai
    // @note           completely rewritten on February 7, 2026
    // @version        1.1.
    // ==/UserScript==
    
    (function() {
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'wetterfuchs-toolbarbutton', // Id des Buttons
            label = 'Wetterfuchs', // Bezeichnung des Buttons
      tooltiptext = 'Lokale und globale Wetter Infos',
      // Icon-------------------------------------------------------
             icon = 'Wetter.png',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/image/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)),
    
      // kleines Lade-GIF als Platzhalter
       wfthrobber = "https://raw.github.com/ardiman/userChrome.js/master/wetterfuchsbutton/loading51.gif",
    
      // ■■ urlobj-Array ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      urlobj = {
        MO_Doppelklick:           {url:"https://www.msn.com/de-de/wetter/heute/de/Berlin,BE,Deutschland/we-city-52.520,13.380",width:700,height:640},
        MO_Rechtsklick:           {url:"http://www.wetter.net/47/Berlin",width:850,height:630},
        MO_Mittelklick:           {url:"https://www.daswetter.com/wetter_Berlin-Europa-Deutschland-Berlin--1-26301.html",width:800,height:638},
        DED_WetterAktuell:        {url:"https://www.wetterkontor.de/de/deutschland_aktuell.asp?id=0&page=0&sort=0",width:625,height:865},
        DED_Vorhersage:           {url:"https://www.wetterkontor.de/de/wetter/deutschland.asp",width:670,height:780},
    	  DED_Wetterlage:           {url:"https://www.wetterkontor.de/de/wetterlage.asp",width:430,height:405},
        DED_Pollenbelastung:      {url:"https://www.wetterkontor.de/de/bio/pollenflug-erle.asp",width:560,height:730},
        DED_UVIndexVorhersage:    {url:"https://www.wetterkontor.de/de/bio/uv-index.asp",width:478,height:720},
    	  DED_Gesund:               {url:"https://www.wetterkontor.de/de/bio/befinden-und-gesundheit.asp?id=1",width:572,height:565},
    	  DED_Therm:                {url:"https://www.wetterkontor.de/de/bio/thermische-belastung.asp",width:572,height:565},
    	  DED_Flusspegel:           {url:"https://www.wetterkontor.de/de/pegel/",width:670,height:792},
    	  DED_Regenradar:           {url:"https://www.wetterkontor.de/de/radar.asp?p=1",width:532,height:575},
        DED_RegenradarVorhersage: {url:"https://www.wetterkontor.de/de/radar/radar-vorhersage.asp?p=1",width:528,height:570},
    	  DED_Satellitenbild:       {url:"https://www.austrocontrol.at/jart/met/radar/satloop.gif",width:620,height:470},
    	  DED_BlitzMittel:          {url:"https://map.blitzortung.org/#5.34/51.978/10.499",width:740,height:740},
    	  DED_BlitzEuro:            {url:"https://map.blitzortung.org/#5.25/50.48/11.333",width:740,height:740},
    	  DED_BlitzWelt:            {url:"https://map.blitzortung.org/#1.37/43.3/21.9",width:940,height:678},
        DE_WetterAktuell:         {url:"https://www.dwd.de/DWD/wetter/aktuell/deutschland/bilder/wx_deutschland.jpg",width:780,height:520},
        DE_Vorhersage:            {url:"https://www.dwd.de/DWD/wetter/wv_allg/deutschland/film/vhs_deutschland.jpg",width:780,height:485},
        DE_Unwetterwarnung:       {url:"http://www.unwetterzentrale.de/images/map/deutschland_index.png",width:572,height:572},
        DE_RegenradarAktuell:     {url:"https://www.niederschlagsradar.de/de-de",width:570,height:650},
        DE_RegenradarPrognose:    {url:"https://www.windy.com/de/-Regen-Gewitter-rain?rain,50.723,10.525,7",width:620,height:690},
        EU_AktuellVorhersage:     {url:"https://www.wetterkontor.de/de/wetter/europa/",width:680,height:690},
        EU_Unwetterwarnung:       {url:"http://www.unwetterzentrale.de/images/map/europe_index.png",width:572,height:572},
        EU_RegenradarAktuell:     {url:"https://www.niederschlagsradar.de/de-de/continent/eu",width:570,height:670},
        EU_RegenradarPrognose:    {url:"https://www.wetteronline.de/regenradar/europa?wro=true",width:660,height:700},
        WE_WetterAktuell:         {url:"https://www.wetterdienst.de/Weltwetter/Beobachtungen/Aktuell/Nordamerika/",width:660,height:690},
    	  WE_WetterVorhersage:      {url:"https://wetter.faz.net/reisewetter/",width:660,height:700},
        RE_AktuellVorhersage:     {url:"https://www.wetterkontor.de/de/wetter/deutschland/brandenburg-berlin.asp",width:675,height:640},
        RE_Unwetterwarnung:       {url:"https://www.wetterkontor.de/warnungen/wetterwarnungen-brandenburg-berlin.asp",width:850,height:560},
        RE_RegenradarAktuell:     {url:"https://www.wetterkontor.de/de/radar/radar-nordost.asp",width:568,height:530},
        RE_RegenradarPrognose:    {url: "https://www.wetteronline.de/regenradar/berlin-bundesland?mode=interactive&wrx=50.16,8.77&wrm=8", width: 850, height: 850},
      };
      // ■■ END Arrey ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
        Services.prefs.setBoolPref('svg.context-properties.content.enabled', true);
      }
    
      // Button erstellen
      try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
    
            // Menü hinzufügen
            let menupopup = document.createXULElement('menupopup');
            menupopup.id = 'wetterfuchs-menupopup';
    
            const menues = [
              {
                label: "DE Wetterdaten",
                items: [
                  ["Wetter aktuell", "DED_WetterAktuell"],
                  ["Vorhersage", "DED_Vorhersage"],
                  ["Pollenbelastung", "DED_Pollenbelastung"],
                  ["UV-Index", "DED_UVIndexVorhersage"],
                  ["Gesund. Beschwerden", "DED_Gesund"],
                  ["Thermische Belastung", "DED_Therm"],
                  ["Wetterlage", "DED_Wetterlage"],
                  ["Flusspegel", "DED_Flusspegel"],
                  ["Regenradar", "DED_Regenradar"],
                  ["Regenradar Vorhersage", "DED_RegenradarVorhersage"],
                  ["Satellitenbild", "DED_Satellitenbild"]
                ]
              },
              {
                label: "DE Wetterkarten",
                items: [
                  ["Wetter aktuell", "DE_WetterAktuell"],
                  ["Vorhersage", "DE_Vorhersage"],
                  ["Unwetterwarnung", "DE_Unwetterwarnung"],
                  ["Regenradar aktuell", "DE_RegenradarAktuell"],
                  ["Regenradarprognose", "DE_RegenradarPrognose"]
                ]
              },
              {
                label: "EU Wetter",
                items: [
                  ["Aktuell und Vorhersage", "EU_AktuellVorhersage"],
                  ["Unwetterwarnung", "EU_Unwetterwarnung"],
                  ["Regenradar aktuell", "EU_RegenradarAktuell"],
                  ["Regenradarprognose", "EU_RegenradarPrognose"]
                ]
              },
              {
                label: "Welt Wetter",
                items: [
                  ["Aktuell", "WE_WetterAktuell"],
                  ["Vorhersage", "WE_WetterVorhersage"]
                ]
              },
              {
                label: "Blitzortung",
                items: [
                  ["Mitteleuropa", "DED_BlitzMittel"],
                  ["Europa", "DED_BlitzEuro"],
                  ["Welt", "DED_BlitzWelt"]
                ]
              },
              {
                label: "Regionales Wetter",
                items: [
                  ["Aktuell und Vorhersage", "RE_AktuellVorhersage"],
                  ["Unwetterwarnung", "RE_Unwetterwarnung"],
                  ["Regenradar aktuell", "RE_RegenradarAktuell"],
                  ["Regenradarprognose", "RE_RegenradarPrognose"]
                ]
              }
            ];
    
            menues.forEach(menu => {
              let menuElement = document.createXULElement('menu');
              menuElement.setAttribute('label', menu.label);
              let menuPopup = document.createXULElement('menupopup');
              menuElement.appendChild(menuPopup);
    
              menu.items.forEach(item => {
                let menuItem = document.createXULElement('menuitem');
                menuItem.setAttribute('label', item[0]);
                menuItem.addEventListener('command', () => {
                  const cfg = urlobj[item[1]];
                  openPanel(cfg.url, cfg.width, cfg.height);
                });
                menuPopup.appendChild(menuItem);
              });
    
              menupopup.appendChild(menuElement);
            });
    
            button.appendChild(menupopup);
            button.setAttribute('type', 'menu');
          }
        });
      } catch (e) { console.error(e); }
    
      // Event-Listener für Mausklicks hinzufügen
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', (event) => {
            if (event.button === 0) {
              // Linksklick: Menü öffnen (automatisch)
            } else if (event.button === 1) {
              event.preventDefault();
              const cfg = urlobj['MO_Mittelklick'];
              openPanel(cfg.url, cfg.width, cfg.height);
            } else if (event.button === 2) {
              event.preventDefault();
              const cfg = urlobj['MO_Rechtsklick'];
              openPanel(cfg.url, cfg.width, cfg.height);
            }
          });
    
          button.addEventListener('dblclick', (event) => {
            event.preventDefault();
            const cfg = urlobj['MO_Doppelklick'];
            openPanel(cfg.url, cfg.width, cfg.height);
          });
        } else {
          setTimeout(add_button, 100);
        }
      })();
    
      // Größe über Stylesheet setzen
      function setIFrameSize(width, height) {
        let cssIn = `
          #wetterfuchs-panel vbox {
            width:  ${width}px !important;
            height: ${height}px !important;
          }
        `;
        let service = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
        let uri = makeURI('data:text/css;charset=UTF-8,' + encodeURIComponent(cssIn));
        if (!service.sheetRegistered(uri, service.AGENT_SHEET)) {
          service.loadAndRegisterSheet(uri, service.AGENT_SHEET);
        }
      }
    
      // Panel erstellen
      function createPanel() {
        let doc = document;
        let panel = doc.createXULElement('panel');
        panel.id = "wetterfuchs-panel";
        panel.setAttribute('noautohide', "false");
        panel.setAttribute('type', "arrow");
        panel.setAttribute('position', "after_end");
    
        panel.addEventListener('popuphiding', () => {
          clearPanel();
        });
    
        panel.addEventListener('mousedown', event => {
          if (event.button == 1) {
            openUrlFromPanel();
          }
        });
    
        let vbox = doc.createXULElement('vbox');
        vbox.setAttribute('flex', '1');
        panel.appendChild(vbox);
    
        let browser = doc.createXULElement('browser');
        browser.id = "wetterfuchs-iframe";
        browser.setAttribute('type', 'content');
        browser.setAttribute('flex', '1');
        browser.setAttribute('remote', 'true');
        browser.setAttribute('maychangeremoteness', 'true');
        browser.setAttribute('disableglobalhistory', 'true');
        browser.setAttribute('src', wfthrobber);
        vbox.appendChild(browser);
    
        doc.getElementById('mainPopupSet').appendChild(panel);
        return panel;
      }
    
      // Panel öffnen und URL laden
      function openPanel(url, width, height) {
        let panel  = document.getElementById("wetterfuchs-panel");
        let iframe = document.getElementById("wetterfuchs-iframe");
    
        if (!panel || !iframe) {
          panel  = createPanel();
          iframe = document.getElementById("wetterfuchs-iframe");
        }
    
        iframe.setAttribute("src", "about:blank");
    
        setTimeout(() => {
          setIFrameSize(width, height);
          iframe.setAttribute("src", url);
          panel.openPopup(
            document.getElementById("wetterfuchs-toolbarbutton"),
            "after_end"
          );
        }, 50);
      }
    
      // Panel zurücksetzen
      function clearPanel() {
        let myiframe = document.getElementById("wetterfuchs-iframe");
        if (!myiframe || !myiframe.parentNode) return;
        myiframe.parentNode.width = 146;
        myiframe.parentNode.height = 146;
        myiframe.setAttribute("src", wfthrobber);
      }
    
      // URL aus dem Panel in einem Tab öffnen
      function openUrlFromPanel() {
        let url = document.getElementById("wetterfuchs-iframe").getAttribute("src");
        openWebLinkIn(url, "tab");
        document.getElementById("wetterfuchs-panel").hidePopup();
      }
    
      // Sichtbarkeits-Handling: nach Minimieren/Zurückholen neu laden
      document.addEventListener("visibilitychange", function() {
        if (document.visibilityState === "visible") {
          let myiframe = document.getElementById("wetterfuchs-iframe");
          if (myiframe) {
            let currentUrl = myiframe.getAttribute("src");
            if (currentUrl && currentUrl !== "about:blank" && currentUrl !== wfthrobber) {
              myiframe.setAttribute("src", currentUrl);
            }
          }
        }
      });
    
      // Optional: regelmäßiges Auffrischen alle 30 Sekunden
      setInterval(function() {
        if (document.visibilityState === "visible") {
          let myiframe = document.getElementById("wetterfuchs-iframe");
          if (myiframe) {
            let currentUrl = myiframe.getAttribute("src");
            if (currentUrl && currentUrl !== "about:blank" && currentUrl !== wfthrobber) {
              myiframe.setAttribute("src", currentUrl);
            }
          }
        }
      }, 30000);
    
    })();
    Alles anzeigen


    Das Skript funktioniert auch ohne security.allow_unsafe_dangerous_privileged_evil_eval auf true zu setzen.
    Betätigen des Buttons mit linkem Doppelklick, Mittelklick und Linksklick öffnet ein Panel (Popup) mit entsprechenden Seiten.
    Das Menü, bzw. das Öffnen der entsprechenden Seiten im Panel (Popup) auch.

    Hoffe es ist so i.O.
    Wenn nicht, Bescheid geben, dann bearbeite ich noch einmal das originale Skript aus #1.115

  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 7. Februar 2026 um 14:21
    Zitat von Endor

    Bitte mal testen.

    Da ist aber immer noch der Bug drinnen, der die Links im Menü einfach ignoriert!

    Und mal so auf die Schnelle.
    Was genau wurde geändert?
    Bzw. was war die Ursache, dass das Skript nicht wirklich so funktionierte wie angedacht?

    Frage!
    Hättest Du gerne einen Button, so wie in den anderen "Testskripten"?
    Und soll ich mich um den Bug kümmern?

  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 7. Februar 2026 um 10:18
    Zitat von BrokenHeart

    Was die Ursache für dieses Problem ist, ...

    Danke für Deine Antwort.

    Keine Ahnung warum.
    Ich kam halt nur darauf, weil ^.
    Interessant ist ja, dass der "Fehler", also das nicht Anzeigen von Seiten nur auftritt,
    wenn diese entweder im Panel (Popup) dargestellt werden sollen,
    oder eben wenn "kleine" Fenster per window.open(... erzeugt werden.

    Nutzt man hingegen das Skript welches ein neues Fenster öffnet, oder
    auch bei meinem Test mit "in einem neuen Tab öffnen", trat dieser "Fehler" nie auf.

  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 7. Februar 2026 um 09:31

    Sören Hentzschel Gehe ich richtig mit meiner Annahme?
    Dass der verbesserte Trackingschutz da aktiv wird und dazwischen grätscht,
    oder liege ich da total falsch und etwas anderes ist die Ursache?

    Auf den Trackingschutz kam ich nur, weil von Anfang an es in der Konsole Meldungen hagelt,
    dass dies, dass jenes nicht geladen werden könne.


    Hier mal einen Auszug.

    Code
    TypeError: can't access dead object 2 window-global.js:1995:30
    Laden fehlgeschlagen für das <script> mit der Quelle "https://consent.cookiebot.com/uc.js". berlin:5:192
    Uncaught ReferenceError: jQuery is not defined
        <anonymous> https://www.wetter.net//templates/wetternet/slick/slick.min.js:1
        <anonymous> https://www.wetter.net//templates/wetternet/slick/slick.min.js:1
    slick.min.js:1:152
    Layout-Darstellung wurde erzwungen, bevor die Seite vollständig geladen war. Falls Stylesheets noch nicht geladen sind, kann dies zu einer kurzzeitigen Darstellung des Inhalts ohne Formatierung führen. jquery.min.js:2:95756
    Laden fehlgeschlagen für das <script> mit der Quelle "https://script.ioam.de/iam.js". berlin:83:72
    Feature Policy: Unbekannte Funktionalität (Feature) "encrypted-media" wird ignoriert. 2 berlin
    Laden fehlgeschlagen für das <script> mit der Quelle "https://cdn.taboola.com/libtrc/qmetgmbh/loader.js". berlin:1:1
    Laden fehlgeschlagen für das <script> mit der Quelle "https://get.mirando.de/mirando.js#a=17624906&as=1&at=100". berlin:600:99
    TypeError: can't access dead object window-global.js:1995:30
    TypeError: can't access dead object window-global.js:1995:30
    Laden fehlgeschlagen für das <script> mit der Quelle "https://get.mirando.de/mirando.js#a=3132&as=1&at=3". bberlin:2169:93
    Laden fehlgeschlagen für das <script> mit der Quelle "https://d.nativendo.de/d/init". berlin:1:1
    downloadable font: download failed (font-family: "Source Sans Pro" style:normal weight:400 stretch:100 src index:0): status=2147746065 source: https://www.wetter.net/modules/mod_wetter_teaser/assets/fonts/SourceSansPro-Light.ttf
    Die Ressource auf "https://platform.twitter.com/widgets/widget_iframe.2f70fb173b9000da126c79afe2098f02.html?origin=https%3A%2F%2Fwww.wetter.net" wurde blockiert, weil der verbesserte Tracking-Schutz aktiviert ist. berlin
    downloadable font: download failed (font-family: "Source Sans Pro" style:normal weight:400 stretch:100 src index:0): status=2147746065 source: https://www.wetter.net/modules/mod_wetter_teaser/assets/fonts/SourceSansPro-Semibold.ttf
    downloadable font: download failed (font-family: "Source Sans Pro" style:normal weight:400 stretch:100 src index:0): status=2147746065 source: https://www.wetter.net/modules/mod_wetter_teaser/assets/fonts/SourceSansPro-Regular.ttf
    downloadable font: download failed (font-family: "Source Sans Pro" style:normal weight:400 stretch:100 src index:0): status=2147746065 source: https://www.wetter.net//components/com_weather/assets/fonts/SourceSansPro-Light.ttf
    downloadable font: download failed (font-family: "Source Sans Pro" style:normal weight:400 stretch:100 src index:0): status=2147746065 source: https://www.wetter.net//components/com_weather/assets/fonts/SourceSansPro-Semibold.ttf
    downloadable font: download failed (font-family: "Source Sans Pro" style:normal weight:400 stretch:100 src index:0): status=2147746065 source: https://www.wetter.net//components/com_weather/assets/fonts/SourceSansPro-Regular.ttf
    No active tab found from getActiveTab
    Alles anzeigen
  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 7. Februar 2026 um 06:02

    1. Die Schlafstörungen haben mal wieder zugeschlagen!
    2. Der Scheiß ließ mir keine Ruh'!

    Also es gibt ja mehrere Möglichkeiten sich die Wetterinfos anzeigen zu lassen!
    1. Möglichkeit, in einem Panel (Popup)
    2. Möglichkeit, per window.open(... (ein neues Fenster im gleichen Prozess)

    Jedoch in beiden Fällen schlägt Firefox verbesserter Trackingschutz zu und die Seiten werden blockiert
    und somit eben nicht mehr angezeigt!
    Hatten wir alles schon!

    3. Möglichkeit, wir umgehen das alles und öffnen ein ganz neues Fenster! (Neuer Prozess!)
    Da sind dann zwar alle Toolbars vorhanden und man muss diese Fenster, wenn nicht mehr gebraucht,
    manuell schließen, aber die Seiten werden IMMER geladen!
    Auch lässt sich die Größe des neuen Fensters beim Öffnen nicht mehr beeinflussen.
    Schade, ist aber so!


    JavaScript
    // ==UserScript==
    // @name           wetterfuchsbutton.uc.js
    // @compatibility  Firefox 147+
    // @include        main
    // @note           by mira + OpenWith-Logik
    // ==/UserScript==
    
    (function() {
      "use strict";
    
      if (!window.gBrowser)
        return;
      if (location != "chrome://browser/content/browser.xhtml")
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'wetterfuchs-toolbarbutton',        // Id des Buttons
            label = 'Wetterfuchs',                      // Bezeichnung des Buttons
      tooltiptext = 'Lokale und globale Wetter Infos',  // Anzeige
      // Icon-------------------------------------------------------
             icon = 'Wetter.png',                       // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/image/',                   // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)),
    
      // öffnet neue Instanz, neues Fenster im aktuellen Profil
      WetterBrowserPath = {
        new:  "C:\\Program Files\\Mozilla Firefox\\firefox.exe<>-new-window $1 -foreground",
      },
    
      // ■■ urlobj-Array ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      urlobj = {
        MO_Doppelklick:           {url:"https://www.msn.com/de-de/wetter/heute/de/Berlin,BE,Deutschland/we-city-52.520,13.380",width:700,height:640},
        MO_Rechtsklick:           {url:"http://www.wetter.net/47/Berlin",width:850,height:630},
        MO_Mittelklick:           {url:"https://www.daswetter.com/wetter_Berlin-Europa-Deutschland-Berlin--1-26301.html",width:800,height:638},
        DED_WetterAktuell:        {url:"https://www.wetterkontor.de/de/deutschland_aktuell.asp?id=0&page=0&sort=0",width:625,height:865},
        DED_Vorhersage:           {url:"https://www.wetterkontor.de/de/wetter/deutschland.asp",width:670,height:780},
    	  DED_Wetterlage:           {url:"https://www.wetterkontor.de/de/wetterlage.asp",width:430,height:405},
        DED_Pollenbelastung:      {url:"https://www.wetterkontor.de/de/bio/pollenflug-erle.asp",width:560,height:730},
        DED_UVIndexVorhersage:    {url:"https://www.wetterkontor.de/de/bio/uv-index.asp",width:478,height:720},
    	  DED_Gesund:               {url:"https://www.wetterkontor.de/de/bio/befinden-und-gesundheit.asp?id=1",width:572,height:565},
    	  DED_Therm:                {url:"https://www.wetterkontor.de/de/bio/thermische-belastung.asp",width:572,height:565},
    	  DED_Flusspegel:           {url:"https://www.wetterkontor.de/de/pegel/",width:670,height:792},
    	  DED_Regenradar:           {url:"https://www.wetterkontor.de/de/radar.asp?p=1",width:532,height:575},
        DED_RegenradarVorhersage: {url:"https://www.wetterkontor.de/de/radar/radar-vorhersage.asp?p=1",width:528,height:570},
    	  DED_Satellitenbild:       {url:"https://www.austrocontrol.at/jart/met/radar/satloop.gif",width:620,height:470},
    	  DED_BlitzMittel:          {url:"https://map.blitzortung.org/#5.34/51.978/10.499",width:740,height:740},
    	  DED_BlitzEuro:            {url:"https://map.blitzortung.org/#5.25/50.48/11.333",width:740,height:740},
    	  DED_BlitzWelt:            {url:"https://map.blitzortung.org/#1.37/43.3/21.9",width:940,height:678},
        DE_WetterAktuell:         {url:"https://www.dwd.de/DWD/wetter/aktuell/deutschland/bilder/wx_deutschland.jpg",width:780,height:520},
        DE_Vorhersage:            {url:"https://www.dwd.de/DWD/wetter/wv_allg/deutschland/film/vhs_deutschland.jpg",width:780,height:485},
        DE_Unwetterwarnung:       {url:"http://www.unwetterzentrale.de/images/map/deutschland_index.png",width:572,height:572},
        DE_RegenradarAktuell:     {url:"https://www.niederschlagsradar.de/de-de",width:570,height:650},
        DE_RegenradarPrognose:    {url:"https://www.windy.com/de/-Regen-Gewitter-rain?rain,50.723,10.525,7",width:620,height:690},
        EU_AktuellVorhersage:     {url:"https://www.wetterkontor.de/de/wetter/europa/",width:680,height:690},
        EU_Unwetterwarnung:       {url:"http://www.unwetterzentrale.de/images/map/europe_index.png",width:572,height:572},
        EU_RegenradarAktuell:     {url:"https://www.niederschlagsradar.de/de-de/continent/eu",width:570,height:670},
        EU_RegenradarPrognose:    {url:"https://www.wetteronline.de/regenradar/europa?wro=true",width:660,height:700},
        WE_WetterAktuell:         {url:"https://www.wetterdienst.de/Weltwetter/Beobachtungen/Aktuell/Nordamerika/",width:660,height:690},
    	  WE_WetterVorhersage:      {url:"https://wetter.faz.net/reisewetter/",width:660,height:700},
        RE_AktuellVorhersage:     {url:"https://www.wetterkontor.de/de/wetter/deutschland/brandenburg-berlin.asp",width:675,height:640},
        RE_Unwetterwarnung:       {url:"https://www.wetterkontor.de/warnungen/wetterwarnungen-brandenburg-berlin.asp",width:850,height:560},
        RE_RegenradarAktuell:     {url:"https://www.wetterkontor.de/de/radar/radar-nordost.asp",width:568,height:530},
        RE_RegenradarPrognose:    {url: "https://www.wetteronline.de/regenradar/berlin-bundesland?mode=interactive&wrx=50.16,8.77&wrm=8", width: 850, height: 850},
      };
      // ■■ END Arrey ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    
      if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
        Services.prefs.setBoolPref('svg.context-properties.content.enabled', true);
      }
    
      // Button erstellen
      try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
          onCreated: (button) => {
            button.style.MozContextProperties = "fill, stroke, fill-opacity";
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = "fit-content";
    
            let menupopup = document.createXULElement("menupopup");
            menupopup.id = "wetterfuchs-menupopup";
    
            const menues = [
              {
                label: "DE Wetterdaten",
                items: [
                  ["Wetter aktuell", "DED_WetterAktuell"],
                  ["Vorhersage", "DED_Vorhersage"],
                  ["Pollenbelastung", "DED_Pollenbelastung"],
                  ["UV-Index", "DED_UVIndexVorhersage"],
                  ["Gesund. Beschwerden", "DED_Gesund"],
                  ["Thermische Belastung", "DED_Therm"],
                  ["Wetterlage", "DED_Wetterlage"],
                  ["Flusspegel", "DED_Flusspegel"],
                  ["Regenradar", "DED_Regenradar"],
                  ["Regenradar Vorhersage", "DED_RegenradarVorhersage"],
                  ["Satellitenbild", "DED_Satellitenbild"],
                ],
              },
              {
                label: "DE Wetterkarten",
                items: [
                  ["Wetter aktuell", "DE_WetterAktuell"],
                  ["Vorhersage", "DE_Vorhersage"],
                  ["Unwetterwarnung", "DE_Unwetterwarnung"],
                  ["Regenradar aktuell", "DE_RegenradarAktuell"],
                  ["Regenradarprognose", "DE_RegenradarPrognose"],
                ],
              },
              {
                label: "EU Wetter",
                items: [
                  ["Aktuell und Vorhersage", "EU_AktuellVorhersage"],
                  ["Unwetterwarnung", "EU_Unwetterwarnung"],
                  ["Regenradar aktuell", "EU_RegenradarAktuell"],
                  ["Regenradarprognose", "EU_RegenradarPrognose"],
                ],
              },
              {
                label: "Welt Wetter",
                items: [
                  ["Aktuell", "WE_WetterAktuell"],
                  ["Vorhersage", "WE_WetterVorhersage"],
                ],
              },
              {
                label: "Blitzortung",
                items: [
                  ["Mitteleuropa", "DED_BlitzMittel"],
                  ["Europa", "DED_BlitzEuro"],
                  ["Welt", "DED_BlitzWelt"],
                ],
              },
              {
                label: "Regionales Wetter",
                items: [
                  ["Aktuell und Vorhersage", "RE_AktuellVorhersage"],
                  ["Unwetterwarnung", "RE_Unwetterwarnung"],
                  ["Regenradar aktuell", "RE_RegenradarAktuell"],
                  ["Regenradarprognose", "RE_RegenradarPrognose"],
                ],
              },
            ];
    
            menues.forEach(menu => {
              let menuElement = document.createXULElement("menu");
              menuElement.setAttribute("label", menu.label);
              let menuPopup = document.createXULElement("menupopup");
              menuElement.appendChild(menuPopup);
    
              menu.items.forEach(item => {
                let menuItem = document.createXULElement("menuitem");
                menuItem.setAttribute("label", item[0]);
                menuItem.addEventListener("command", () => {
                  const cfg = urlobj[item[1]];
                  openInNewInstance(cfg);
                });
                menuPopup.appendChild(menuItem);
              });
    
              menupopup.appendChild(menuElement);
            });
    
            button.appendChild(menupopup);
            button.setAttribute("type", "menu");
          },
        });
      } catch (e) {
        console.error("Wetterfuchs: Fehler beim Erstellen des Buttons", e);
      }
    
      // Pfad<>Args splitten, $1 durch URL ersetzen, Prozess starten
      function launchExternal(browserPath, openURL) {
        let [path, args] = browserPath.split("<>");
        if (args) {
          args = args.split(" ").map(a => a.replace("$1", openURL));
        } else {
          args = [openURL];
        }
    
        const file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
        file.initWithPath(path);
    
        const process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
        process.init(file);
        process.run(false, args, args.length, {});
      }
    
      // Wetterseite in neuer Instanz öffnen
      function openInNewInstance(cfg) {
        if (!cfg || !cfg.url) {
          console.error("Wetterfuchs: cfg oder cfg.url fehlt", cfg);
          return;
        }
        const browserPath = WetterBrowserPath.new;
        launchExternal(browserPath, cfg.url);
      }
    
      // Klick-Handler: Mittel-/Rechtsklick & Doppelklick → neue Instanz
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener("click", (event) => {
            if (event.button === 0) {
              // Linksklick: Menü
            } else if (event.button === 1) {
              event.preventDefault();
              const cfg = urlobj["MO_Mittelklick"];
              openInNewInstance(cfg);
            } else if (event.button === 2) {
              event.preventDefault();
              const cfg = urlobj["MO_Rechtsklick"];
              openInNewInstance(cfg);
            }
          });
    
          button.addEventListener("dblclick", (event) => {
            event.preventDefault();
            const cfg = urlobj["MO_Doppelklick"];
            openInNewInstance(cfg);
          });
        } else {
          setTimeout(add_button, 100);
        }
      })();
    
    })();
    Alles anzeigen

    Eventuell kann man ja mit dem CSS die Seiten noch etwas verschönern?

  • Verwendung von Firefox Translations funktioniert nicht

    • Mira_Belle
    • 6. Februar 2026 um 23:19

    Und schon etwas älter!

    Mate Translate – Übersetzer, Wörterbuch – Holen Sie sich diese Erweiterung für 🦊 Firefox (de)
    Laden Sie Mate Translate – Übersetzer, Wörterbuch für Firefox herunter. Ultimativer Übersetzer für Webseiten, ausgewählten Text und Netflix-Untertiteln. 103…
    addons.mozilla.org
  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 6. Februar 2026 um 22:20

    Test abgeschlossen!

    Es hat mit dem verbesserten Tracking-Schutz im Firefox zu tun, dass die Seiten im Panel nicht nach geladen werden.

    Wie man das um gehen kann, und ob, da bin ich echt überfragt!
    Da ich das Skript nicht nutze, es war nur eine Herausforderung, mache ich jetzt hier an dieser Stelle aber Schluß.

    Wer mit meinem neuen Skript etwas spielen will, ....

    JavaScript
    // ==UserScript==
    // @name           wetterfuchsbutton.uc.js
    // @compatibility  Firefox 147+
    // @include        main
    // @note           by mira with help from www.perplexity.ai and chat.mistral.ai
    // @note           completely rewritten on February 6, 2026
    // @version        1.0.
    // ==/UserScript==
    
    (function() {
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'wetterfuchs-toolbarbutton', // Id des Buttons
            label = 'Wetterfuchs', // Bezeichnung des Buttons
      tooltiptext = 'Lokale und globale Wetter Infos',
      // Icon-------------------------------------------------------
             icon = 'Wetter.png',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/image/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)),
    
      // kleines Lade-GIF als Platzhalter
       wfthrobber = "https://raw.github.com/ardiman/userChrome.js/master/wetterfuchsbutton/loading51.gif",
    
      // ■■ urlobj-Array ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      urlobj = {
        MO_Doppelklick:           {url:"https://www.msn.com/de-de/wetter/heute/de/Berlin,BE,Deutschland/we-city-52.520,13.380",width:700,height:640},
        MO_Rechtsklick:           {url:"http://www.wetter.net/47/Berlin",width:850,height:630},
        MO_Mittelklick:           {url:"https://www.daswetter.com/wetter_Berlin-Europa-Deutschland-Berlin--1-26301.html",width:800,height:638},
        DED_WetterAktuell:        {url:"https://www.wetterkontor.de/de/deutschland_aktuell.asp?id=0&page=0&sort=0",width:625,height:865},
        DED_Vorhersage:           {url:"https://www.wetterkontor.de/de/wetter/deutschland.asp",width:670,height:780},
    	  DED_Wetterlage:           {url:"https://www.wetterkontor.de/de/wetterlage.asp",width:430,height:405},
        DED_Pollenbelastung:      {url:"https://www.wetterkontor.de/de/bio/pollenflug-erle.asp",width:560,height:730},
        DED_UVIndexVorhersage:    {url:"https://www.wetterkontor.de/de/bio/uv-index.asp",width:478,height:720},
    	  DED_Gesund:               {url:"https://www.wetterkontor.de/de/bio/befinden-und-gesundheit.asp?id=1",width:572,height:565},
    	  DED_Therm:                {url:"https://www.wetterkontor.de/de/bio/thermische-belastung.asp",width:572,height:565},
    	  DED_Flusspegel:           {url:"https://www.wetterkontor.de/de/pegel/",width:670,height:792},
    	  DED_Regenradar:           {url:"https://www.wetterkontor.de/de/radar.asp?p=1",width:532,height:575},
        DED_RegenradarVorhersage: {url:"https://www.wetterkontor.de/de/radar/radar-vorhersage.asp?p=1",width:528,height:570},
    	  DED_Satellitenbild:       {url:"https://www.austrocontrol.at/jart/met/radar/satloop.gif",width:620,height:470},
    	  DED_BlitzMittel:          {url:"https://map.blitzortung.org/#5.34/51.978/10.499",width:740,height:740},
    	  DED_BlitzEuro:            {url:"https://map.blitzortung.org/#5.25/50.48/11.333",width:740,height:740},
    	  DED_BlitzWelt:            {url:"https://map.blitzortung.org/#1.37/43.3/21.9",width:940,height:678},
        DE_WetterAktuell:         {url:"https://www.dwd.de/DWD/wetter/aktuell/deutschland/bilder/wx_deutschland.jpg",width:780,height:520},
        DE_Vorhersage:            {url:"https://www.dwd.de/DWD/wetter/wv_allg/deutschland/film/vhs_deutschland.jpg",width:780,height:485},
        DE_Unwetterwarnung:       {url:"http://www.unwetterzentrale.de/images/map/deutschland_index.png",width:572,height:572},
        DE_RegenradarAktuell:     {url:"https://www.niederschlagsradar.de/de-de",width:570,height:650},
        DE_RegenradarPrognose:    {url:"https://www.windy.com/de/-Regen-Gewitter-rain?rain,50.723,10.525,7",width:620,height:690},
        EU_AktuellVorhersage:     {url:"https://www.wetterkontor.de/de/wetter/europa/",width:680,height:690},
        EU_Unwetterwarnung:       {url:"http://www.unwetterzentrale.de/images/map/europe_index.png",width:572,height:572},
        EU_RegenradarAktuell:     {url:"https://www.niederschlagsradar.de/de-de/continent/eu",width:570,height:670},
        EU_RegenradarPrognose:    {url:"https://www.wetteronline.de/regenradar/europa?wro=true",width:660,height:700},
        WE_WetterAktuell:         {url:"https://www.wetterdienst.de/Weltwetter/Beobachtungen/Aktuell/Nordamerika/",width:660,height:690},
    	  WE_WetterVorhersage:      {url:"https://wetter.faz.net/reisewetter/",width:660,height:700},
        RE_AktuellVorhersage:     {url:"https://www.wetterkontor.de/de/wetter/deutschland/brandenburg-berlin.asp",width:675,height:640},
        RE_Unwetterwarnung:       {url:"https://www.wetterkontor.de/warnungen/wetterwarnungen-brandenburg-berlin.asp",width:850,height:560},
        RE_RegenradarAktuell:     {url:"https://www.wetterkontor.de/de/radar/radar-nordost.asp",width:568,height:530},
        RE_RegenradarPrognose:    {url: "https://www.wetteronline.de/regenradar/berlin-bundesland?mode=interactive&wrx=50.16,8.77&wrm=8", width: 850, height: 850},
      };
      // ■■ END Arrey ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
        Services.prefs.setBoolPref('svg.context-properties.content.enabled', true);
      }
    
      // Button erstellen
      try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
    
            // Menü hinzufügen
            let menupopup = document.createXULElement('menupopup');
            menupopup.id = 'wetterfuchs-menupopup';
    
            const menues = [
              {
                label: "DE Wetterdaten",
                items: [
                  ["Wetter aktuell", "DED_WetterAktuell"],
                  ["Vorhersage", "DED_Vorhersage"],
                  ["Pollenbelastung", "DED_Pollenbelastung"],
                  ["UV-Index", "DED_UVIndexVorhersage"],
                  ["Gesund. Beschwerden", "DED_Gesund"],
                  ["Thermische Belastung", "DED_Therm"],
                  ["Wetterlage", "DED_Wetterlage"],
                  ["Flusspegel", "DED_Flusspegel"],
                  ["Regenradar", "DED_Regenradar"],
                  ["Regenradar Vorhersage", "DED_RegenradarVorhersage"],
                  ["Satellitenbild", "DED_Satellitenbild"]
                ]
              },
              {
                label: "DE Wetterkarten",
                items: [
                  ["Wetter aktuell", "DE_WetterAktuell"],
                  ["Vorhersage", "DE_Vorhersage"],
                  ["Unwetterwarnung", "DE_Unwetterwarnung"],
                  ["Regenradar aktuell", "DE_RegenradarAktuell"],
                  ["Regenradarprognose", "DE_RegenradarPrognose"]
                ]
              },
              {
                label: "EU Wetter",
                items: [
                  ["Aktuell und Vorhersage", "EU_AktuellVorhersage"],
                  ["Unwetterwarnung", "EU_Unwetterwarnung"],
                  ["Regenradar aktuell", "EU_RegenradarAktuell"],
                  ["Regenradarprognose", "EU_RegenradarPrognose"]
                ]
              },
              {
                label: "Welt Wetter",
                items: [
                  ["Aktuell", "WE_WetterAktuell"],
                  ["Vorhersage", "WE_WetterVorhersage"]
                ]
              },
              {
                label: "Blitzortung",
                items: [
                  ["Mitteleuropa", "DED_BlitzMittel"],
                  ["Europa", "DED_BlitzEuro"],
                  ["Welt", "DED_BlitzWelt"]
                ]
              },
              {
                label: "Regionales Wetter",
                items: [
                  ["Aktuell und Vorhersage", "RE_AktuellVorhersage"],
                  ["Unwetterwarnung", "RE_Unwetterwarnung"],
                  ["Regenradar aktuell", "RE_RegenradarAktuell"],
                  ["Regenradarprognose", "RE_RegenradarPrognose"]
                ]
              }
            ];
    
            menues.forEach(menu => {
              let menuElement = document.createXULElement('menu');
              menuElement.setAttribute('label', menu.label);
              let menuPopup = document.createXULElement('menupopup');
              menuElement.appendChild(menuPopup);
    
              menu.items.forEach(item => {
                let menuItem = document.createXULElement('menuitem');
                menuItem.setAttribute('label', item[0]);
                menuItem.addEventListener('command', () => {
                  const cfg = urlobj[item[1]];
                  openPanel(cfg.url, cfg.width, cfg.height);
                });
                menuPopup.appendChild(menuItem);
              });
    
              menupopup.appendChild(menuElement);
            });
    
            button.appendChild(menupopup);
            button.setAttribute('type', 'menu');
          }
        });
      } catch (e) { console.error(e); }
    
      // Event-Listener für Mausklicks hinzufügen
      (function add_button() {
        const button = document.getElementById(id);
        if (button) {
          button.addEventListener('click', (event) => {
            if (event.button === 0) {
              // Linksklick: Menü öffnen (automatisch)
            } else if (event.button === 1) {
              event.preventDefault();
              const cfg = urlobj['MO_Mittelklick'];
              openPanel(cfg.url, cfg.width, cfg.height);
            } else if (event.button === 2) {
              event.preventDefault();
              const cfg = urlobj['MO_Rechtsklick'];
              openPanel(cfg.url, cfg.width, cfg.height);
            }
          });
    
          button.addEventListener('dblclick', (event) => {
            event.preventDefault();
            const cfg = urlobj['MO_Doppelklick'];
            openPanel(cfg.url, cfg.width, cfg.height);
          });
        } else {
          setTimeout(add_button, 100);
        }
      })();
    
      // Größe über Stylesheet setzen (wie im funktionierenden Script)
      function setIFrameSize(width, height) {
        let cssIn = `
          #wetterfuchs-panel vbox {
            width:  ${width}px !important;
            height: ${height}px !important;
          }
        `;
        let service = Cc['@mozilla.org/content/style-sheet-service;1']
                        .getService(Ci.nsIStyleSheetService);
        let uri = makeURI('data:text/css;charset=UTF-8,' + encodeURIComponent(cssIn));
        if (!service.sheetRegistered(uri, service.AGENT_SHEET)) {
          service.loadAndRegisterSheet(uri, service.AGENT_SHEET);
        }
      }
    
      // Panel erstellen
      function createPanel() {
        let panel = document.createXULElement('panel');
        panel.id = "wetterfuchs-panel";
        panel.setAttribute('noautohide', "false");
        panel.setAttribute('type', "arrow");
        panel.setAttribute('position', "after_end");
    
        let vbox = document.createXULElement('vbox');
        vbox.setAttribute('flex', '1');
        panel.appendChild(vbox);
    
        let browser = document.createXULElement('browser');
        browser.id = "wetterfuchs-iframe";
        browser.setAttribute('type', 'content');
        browser.setAttribute('flex', '1');
        browser.setAttribute('remote', 'true');      // wichtig
        browser.setAttribute('src', wfthrobber);     // erstmal Throbber
        vbox.appendChild(browser);
    
        document.getElementById('mainPopupSet').appendChild(panel);
        return panel;
      }
    
      // Panel öffnen und URL laden
      function openPanel(url, width, height) {
        let panel  = document.getElementById("wetterfuchs-panel");
        let iframe = document.getElementById("wetterfuchs-iframe");
    
        if (!panel || !iframe) {
          panel  = createPanel();
          iframe = document.getElementById("wetterfuchs-iframe");
        }
    
        // Größe setzen
        setIFrameSize(width, height);
    
        // Panel öffnen
        panel.openPopup(
          document.getElementById("wetterfuchs-toolbarbutton"),
          "after_end"
        );
    
        // Erst leeren …
        iframe.setAttribute('src', "about:blank");
    
        // … dann mit kleiner Verzögerung Ziel-URL setzen
        setTimeout(() => {
          let frame = document.getElementById("wetterfuchs-iframe");
          if (!frame) return;
          frame.setAttribute("src", url);
        }, 100);
      }
    
      // Sichtbarkeits-Handling: nach Minimieren/Zurückholen neu laden
      document.addEventListener("visibilitychange", function() {
        if (document.visibilityState === "visible") {
          let myiframe = document.getElementById("wetterfuchs-iframe");
          if (myiframe) {
            let currentUrl = myiframe.getAttribute("src");
            if (currentUrl && currentUrl !== "about:blank" && currentUrl !== wfthrobber) {
              myiframe.setAttribute("src", currentUrl);
            }
          }
        }
      });
    
      // Optional: regelmäßiges Auffrischen alle 30 Sekunden
      setInterval(function() {
        if (document.visibilityState === "visible") {
          let myiframe = document.getElementById("wetterfuchs-iframe");
          if (myiframe) {
            let currentUrl = myiframe.getAttribute("src");
            if (currentUrl && currentUrl !== "about:blank" && currentUrl !== wfthrobber) {
              myiframe.setAttribute("src", currentUrl);
            }
          }
        }
      }, 30000);
    
    })();
    Alles anzeigen
  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 6. Februar 2026 um 21:55

    Endor
    Also, ich haben mal ein ganz neues Skript gebaut und ausgiebig getestet.
    Auch bei diesem werden die Seiten nach einer Weile nicht mehr geladen (angezeigt).

    Ich hege einen Verdacht!

    Dem werde ich jetzt mal mit Deinem Skript nachgehen und dann berichten!

  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 5. Februar 2026 um 21:47

    Sorry, nun gehen mir die Ideen aus.
    Weiß nicht wie ich das noch erklären soll, damit die KI eventuell etwas Brauchbares auswirft!

    Was mir aufgefallen ist, gerät der Firefox in den Hintergrund, oder wird er auch nur kurz minimiert, hängt das Skript.

  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 5. Februar 2026 um 21:26

    Himmel grrrr.
    Das gibt es doch gar nicht!
    Sieben, acht oder mehr ...
    und jetzt hängt es wieder!

  • Wetterfuchsbutton Script für userChrome.js

    • Mira_Belle
    • 5. Februar 2026 um 21:09

    Ob es jetzt läuft?
    Bisher klappt es!

    JavaScript
    // ==UserScript==
    // @name           wetterfuchsbutton.uc.js
    // @compatibility  Firefox 147+
    // @include        main
    // @note           by mira with help from www.perplexity.ai
    // @version        1.0.20260205
    // ==/UserScript==
    
    var wetterfuchs = {
    
      urlobj: {
        MO_Doppelklick: {url:"https://www.msn.com/de-de/wetter/heute/de/Berlin,BE,Deutschland/we-city-52.520,13.380",width:700,height:640},
        MO_Rechtsklick: {url:"http://www.wetter.net/47/Berlin",width:850,height:630},
        MO_Mittelklick: {url:"https://www.daswetter.com/wetter_Berlin-Europa-Deutschland-Berlin--1-26301.html",width:800,height:638},
        DED_WetterAktuell: {url:"https://www.wetterkontor.de/de/deutschland_aktuell.asp?id=0&page=0&sort=0",width:625,height:865},
        DED_Vorhersage: {url:"https://www.wetterkontor.de/de/wetter/deutschland.asp",width:670,height:780},
    	  DED_Wetterlage: {url:"https://www.wetterkontor.de/de/wetterlage.asp",width:430,height:405},
        DED_Pollenbelastung: {url:"https://www.wetterkontor.de/de/bio/pollenflug-erle.asp",width:560,height:730},
        DED_UVIndexVorhersage: {url:"https://www.wetterkontor.de/de/bio/uv-index.asp",width:478,height:720},
    	  DED_Gesund: {url:"https://www.wetterkontor.de/de/bio/befinden-und-gesundheit.asp?id=1",width:572,height:565},
    	  DED_Therm: {url:"https://www.wetterkontor.de/de/bio/thermische-belastung.asp",width:572,height:565},
    	  DED_Flusspegel: {url:"https://www.wetterkontor.de/de/pegel/",width:670,height:792},
    	  DED_Regenradar: {url:"https://www.wetterkontor.de/de/radar.asp?p=1",width:532,height:575},
        DED_RegenradarVorhersage: {url:"https://www.wetterkontor.de/de/radar/radar-vorhersage.asp?p=1",width:528,height:570},
    	  DED_Satellitenbild: {url:"https://www.austrocontrol.at/jart/met/radar/satloop.gif",width:620,height:470},
    	  DED_BlitzMittel: {url:"https://map.blitzortung.org/#5.34/51.978/10.499",width:740,height:740},
    	  DED_BlitzEuro: {url:"https://map.blitzortung.org/#5.25/50.48/11.333",width:740,height:740},
    	  DED_BlitzWelt: {url:"https://map.blitzortung.org/#1.37/43.3/21.9",width:940,height:678},
        DE_WetterAktuell: {url:"https://www.dwd.de/DWD/wetter/aktuell/deutschland/bilder/wx_deutschland.jpg",width:780,height:520},
        DE_Vorhersage: {url:"https://www.dwd.de/DWD/wetter/wv_allg/deutschland/film/vhs_deutschland.jpg",width:780,height:485},
        DE_Unwetterwarnung: {url:"http://www.unwetterzentrale.de/images/map/deutschland_index.png",width:572,height:572},
        DE_RegenradarAktuell: {url:"https://www.niederschlagsradar.de/de-de",width:570,height:650},
        DE_RegenradarPrognose: {url:"https://www.windy.com/de/-Regen-Gewitter-rain?rain,50.723,10.525,7",width:620,height:690},
        EU_AktuellVorhersage: {url:"https://www.wetterkontor.de/de/wetter/europa/",width:680,height:690},
        EU_Unwetterwarnung: {url:"http://www.unwetterzentrale.de/images/map/europe_index.png",width:572,height:572},
        EU_RegenradarAktuell: {url:"https://www.niederschlagsradar.de/de-de/continent/eu",width:570,height:670},
        EU_RegenradarPrognose: {url:"https://www.wetteronline.de/regenradar/europa?wro=true",width:660,height:700},
        WE_WetterAktuell: {url:"https://www.wetterdienst.de/Weltwetter/Beobachtungen/Aktuell/Nordamerika/",width:660,height:690},
    	  WE_WetterVorhersage: {url:"https://wetter.faz.net/reisewetter/",width:660,height:700},
        RE_AktuellVorhersage: {url:"https://www.wetterkontor.de/de/wetter/deutschland/brandenburg-berlin.asp",width:675,height:640},
        RE_Unwetterwarnung: {url:"https://www.wetterkontor.de/warnungen/wetterwarnungen-brandenburg-berlin.asp",width:850,height:560},
        RE_RegenradarAktuell: {url:"https://www.wetterkontor.de/de/radar/radar-nordost.asp",width:568,height:530},
        RE_RegenradarPrognose: {url:"https://www.wetteronline.de/regenradar/berlin-bundesland?mode=interactive&wrx=52.51,13.41&wrm=8",width:850,height:850},
      },
    
      wfthrobber: "https://raw.github.com/ardiman/userChrome.js/master/wetterfuchsbutton/loading51.gif",
      // alternativ z.B. wfthrobber: "chrome://global/skin/media/throbber.png"
    
      createBtn: function() {
        try {
          CustomizableUI.createWidget({
            id: 'wetterfuchs-toolbarbutton',
            type: 'custom',
            onBuild: function(aDocument) {
              var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
              var attributes = {
                id: 'wetterfuchs-toolbarbutton',
                class: 'chromeclass-toolbar-additional',
                type: 'menu',
                removable: 'true',
                label: 'Wetterfuchs',
                tooltiptext: 'Lokale und globale Wetter Infos',
                style: 'list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAD+0lEQVQ4jb3Tf0zUZRwH8LdgEngngitiMVBXcxH4h+lmETndkqVIOYemrewH4ipJmCjmmDLJRmrKBkPgMNYSMYNN3cQ1YoG4ovjpwQEnX+644ziP7/fbHd9z4SnH8+4PxXIWtLX13j7bsz17Xtvz+TwP8H9lfXx02NT62HJd3JHlurgHe9GhYX9/appkx+k31m0JKtEBzzdlLLz08+6FlxcAz9VtCi7JjtNv/NfQ60sXJQJA/VocutVx6I77+9fGbl/fNeG7nu53X355zNu89W5DSkA+AGyIj1o1I1i1KtQglyzn2MUk/+TNYgq1nEIuohg9TuHK56Qtg2PfxftdJ2L4zStzK6azHgOwoDNRf9Q/kEPeqiJ/MwiqZaRSQsqFpOswhSNL0PEeJ9pXsDVBd1IH3ZMA5jyiFSwOWt//2eIfTF+lyt3XjrCvrZjjN0vJsQpSOUbezCQdH5D2N0nrBk6aYun5+nHF+KmusXDJ/JRHwI7UrS9WH05TW1quUZLMorOjlacNp9j/ay7p2kmquyhGd5HOHeTwNgrLq0J0hfPGhyE9BUA0gICHwIq8vNy2tva7DoeDZrOZNTU1rK6uZl1dPc+fr+HF2uOUBw9SKPtJ18fk8FZOGqPYsy34l1Ig9iEwBogs+uLzVpPJRIvFIoxGIxsaGihJEm02G212O43dfaysrKC9L4/05JDOHRTmeKHVzOaVJH1tInRPTHmBGe9v3/NTc/P40NAQrVYrJUni4ODgPcxm4/DwMB0OBzs6Onm2qpAj/bmcdKZTmBbRtD2o80pw4MZ9gB4AkJaWFnHhwoU7qqrS6XSKkZGRB5DL5aIsy1QUhaqq0uVycWBggF1d7aLlx+OcuB4hpMwQaz6w5P4rAVJSUhJ6e3vpdrupKAplWaYkSTSZTJRlmZqm0ev10uv1UtM0jo+P0+fzcXBIFj1nEiekzBDnt0vnffKgfytXrlxWX1/v93g8dLvdtFqt7O7uFhaLhXa7nYqiUNM0appGVVXp8/mE3+/nrdvjrMrY214FJJUBkX8dSkRycvKpsrIy58VLl+5cbW6m0WgUHo+HsizT1NtLVVWpaRodIyNUVDdv+3x0jI6y8I017SeAp7OBuQBmTYEBAGL1ev27EWFhB/ZnZTkbm5rYb77BltZWGsrLRWPTVfaZB1h7tpKGL/ewsqTo992bNnXs0wfvBRD0T19vdjgQFQmkLwkPN2x+aVnbO3ExA6uB2p0vPGX7KOEZxzrgXE402rbMw7nVwOZS4NnpwKkEA4hZByRnAm/lA2tP6HHgaAgOngTW1ABJZ4AV9282awbrz2QBwQVAaCowpxiIMQCLUoE5ecD8t+/17D8l8H7NmD8Aw0h46qvM+RMAAAAASUVORK5CYII=)'
              };
              for (var a in attributes)
              toolbaritem.setAttribute(a, attributes[a]);
              appendMenupopup(toolbaritem);
              toolbaritem.addEventListener('contextmenu', event => {
                event.preventDefault();
                event.stopPropagation();
                return false;
              });
              // Doppelklick links → MSN
              toolbaritem.addEventListener('dblclick', event => {
                if (event.button === 0) {
                  wetterfuchs.openPanel('MO_Doppelklick', event, 'b');
                }
              });
              // Einfachklick Mitte/Rechts → andere Seiten
              toolbaritem.addEventListener('click', event => {
                if (event.detail > 1) return;  // nur Einfachklick, kein Doppelklick
    
                if (event.button === 1) {
                  wetterfuchs.openPanel('MO_Mittelklick', event, 'b'); // daswetter.com
                }
                if (event.button === 2) {
                  wetterfuchs.openPanel('MO_Rechtsklick', event, 'b'); // wetter.net
                }
              });
              return toolbaritem;
            }
          });
    
        } catch(e) { };
    
        function appendMenupopup(toolbaritem) {
          let mymenu = document.createXULElement('menupopup');
          mymenu.id = 'wetterfuchsmenu';
          toolbaritem.appendChild(mymenu);
    	  
          function appendMenu(label, id, Items) {
            let menu = document.createXULElement('menu');
            menu.setAttribute('label', label);
            mymenu.appendChild(menu);
    
            let menupopup = document.createXULElement('menupopup');
            menupopup.id = id;
            menu.appendChild(menupopup);
    
            for (let item of Items) {
              let menuitem = document.createXULElement('menuitem');
              menuitem.setAttribute('label', item[0]);
    
              // Linksklick auf den Menüeintrag
    			    menuitem.addEventListener('click', function (ev) {
                wetterfuchs.openPanel(item[1], ev, 'p');						
    					});
              menupopup.appendChild(menuitem);
            };
          };
          appendMenu("DE Wetterdaten", "wetterfuchsdatamenu", [
            ["Wetter aktuell",         "DED_WetterAktuell"],
            ["Vorhersage",             "DED_Vorhersage"],
            ["Pollenbelastung",        "DED_Pollenbelastung"],
            ["UV-Index",               "DED_UVIndexVorhersage"],
            ["Gesund. Beschwerden",    "DED_Gesund"],
            ["Thermische Belastung",   "DED_Therm"],
            ["Wetterlage",             "DED_Wetterlage"],
            ["Flusspegel",             "DED_Flusspegel"],
            ["Regenradar",             "DED_Regenradar"],
            ["Regenradar Vorhersage",  "DED_RegenradarVorhersage"],
            ["Satellitenbild",         "DED_Satellitenbild"]
          ]);
          appendMenu("DE Wetterkarten", "wetterfuchsDEmapsmenu", [
            ["Wetter aktuell",         "DE_WetterAktuell"],
            ["Vorhersage",             "DE_Vorhersage"],
            ["Unwetterwarnung",        "DE_Unwetterwarnung"],
            ["Regenradar aktuell",     "DE_RegenradarAktuell"],
            ["Regenradarprognose",     "DE_RegenradarPrognose"],
          ]);
          appendMenu("EU Wetter", "wetterfuchsEUmapsmenu", [
            ["Aktuell und Vorhersage", "EU_AktuellVorhersage"],
            ["Unwetterwarnung",        "EU_Unwetterwarnung"],
            ["Regenradar aktuell",     "EU_RegenradarAktuell"],
            ["Regenradarprognose",     "EU_RegenradarPrognose"],      
          ]);
          appendMenu("Welt Wetter", "wetterfuchsWEmapsmenu", [
            ["Aktuell",                "WE_WetterAktuell"],
            ["Vorhersage",             "WE_WetterVorhersage"],
          ]);
          appendMenu("Blitzortung", "wetterfuchsBLZmapsmenu", [
            ["Mitteleuropa",           "DED_BlitzMittel"],
            ["Europa",                 "DED_BlitzEuro"],
            ["Welt",                   "DED_BlitzWelt"],
          ]);
          appendMenu("Regionales Wetter", "wetterfuchsRegiomapsmenu", [
            ["Aktuell und Vorhersage", "RE_AktuellVorhersage"],
            ["Unwetterwarnung",        "RE_Unwetterwarnung"],
            ["Regenradar aktuell",     "RE_RegenradarAktuell"],
            ["Regenradarprognose",     "RE_RegenradarPrognose"], 
          ]);
        };
      },
    
      init: function() {
        this.createBtn();
        let panel = document.createXULElement('panel');
        panel.id = "wetterfuchs-panel";
        panel.setAttribute('noautohide', "false");
        panel.setAttribute('type', "arrow");
    	  panel.addEventListener('popuphiding', () => {
    			wetterfuchs.clearPanel();
        });
    		panel.addEventListener('mousedown', event => {
    			if (event.button == 1) {
    				wetterfuchs.openUrlFromPanel();
    			}
        });	
        let element = document.getElementById('mainPopupSet').appendChild(panel);
        let vbox = document.createXULElement('vbox');
        panel.appendChild(vbox);
        let browser = document.createXULElement('browser');
        browser.id = "wetterfuchs-iframe";
        browser.setAttribute('type', 'content');
        browser.setAttribute('flex', '1');
        browser.setAttribute('remote', 'true');
        browser.setAttribute('src', this.wfthrobber);
        vbox.appendChild(browser);
      },
    
      myEventhandler: function (e,toDo) {
        switch (toDo) {
         case "p":
          e.preventDefault();
          break;
         case "s":
          e.stopPropagation();
          break;
         case "b":
          e.preventDefault();
          e.stopPropagation();
          break;
        }
      },
    
      clearPanel: function() {
        let myiframe = document.getElementById("wetterfuchs-iframe");
        if (!myiframe) return;
    
        myiframe.setAttribute("src", this.wfthrobber);
        this.setIFrameSize(146, 146);
      },
    
      openUrlFromPanel: function() {
        openWebLinkIn(document.getElementById("wetterfuchs-iframe").getAttribute("src"),"tab");
        document.getElementById("wetterfuchs-panel").hidePopup();
      },
    
      openPanel: function(bezeichner, e, toDo) {
        this.myEventhandler(e, toDo);
    
        let mymenu = document.getElementById("wetterfuchsmenu");
        if (mymenu && mymenu.state === "open" && e.button !== 0) {
          return;
        }
        if (mymenu) {
          mymenu.hidePopup();
        }
    
        let myiframe = document.getElementById("wetterfuchs-iframe");
        let mypanel  = document.getElementById("wetterfuchs-panel");
        if (!myiframe || !mypanel) {
          return;
        }
    
        // Konfiguration aus urlobj holen
        let cfg = this.urlobj[bezeichner];
        if (!cfg) {
          return;
        }
    
        // Panelgröße setzen
        this.setIFrameSize(cfg.width, cfg.height);
    
        // Panel öffnen (wie bisher)
        mypanel.openPopup(document.getElementById("wetterfuchs-toolbarbutton"));
    
        // Neu-Laden erzwingen, auch wenn dieselbe URL noch mal kommt
        let newUrl = cfg.url;
        let oldUrl = myiframe.getAttribute("src");
    
        if (oldUrl === newUrl) {
          // kleiner Trick: kurz auf about:blank, dann wieder zurück
          myiframe.setAttribute("src", "about:blank");
          setTimeout(() => {
            myiframe.setAttribute("src", newUrl);
          }, 50);
        } else {
          myiframe.setAttribute("src", newUrl);
        }
      },
    
    
      setIFrameSize: function( _width, _height) {
    		var cssIn =`
    			#wetterfuchs-panel vbox {
    				width: 	${_width}px !important;
    				height: ${_height}px !important;
    			}
    		`;
    		service = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
    		uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(cssIn));
    		service.loadAndRegisterSheet(uri, service.AGENT_SHEET);	
    	}
    
    };
    
    if (location == 'chrome://browser/content/browser.xhtml')
      wetterfuchs.init();
    Alles anzeigen

Unterstütze uns!

Jährlich (2026)

32,8 %

32,8% (213,31 von 650 EUR)

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