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

  • Off-Topic aus: Firefox View

    • Mira_Belle
    • 13. Juni 2026 um 16:02

    Boersenfeger <3

  • JavaScript ist aktiviert, soll aber aktiviert werden

    • Mira_Belle
    • 13. Juni 2026 um 16:01

    schlingo Du kannst doch Google, oder?

    Google Search

    Zitat von schlingo

    Das sind ganz sicher (legale!) Lizenzen und nicht einfach Aktivierungscodes? Quelle?

    z.B. https://www.lizensio.de/windows

    Zitat von schlingo

    Das ist irrelevant. Es ist auf jeden Fall illegal.

    Das auch! Es ist scheißegal.
    Aber dazu sein auf jeden Fall gesagt, dass jeder mündig ist und selbst entscheiden muss, was er tut und was nicht!

  • No browser update notification

    • Mira_Belle
    • 13. Juni 2026 um 08:10

    juzzlukin Den Profilmanager nutze ich auch, und auch ich habe mehrere Profile.
    Aber der Firefox aktualisiert sich von ganz alleine, egal welches Profil ich gerade nutze!
    Ich denke auch, dass der Fehler in Deinem System liegt.
    Irgendeine Antivirensoftware oder irgendein Tuningtool!?


    Nachtrag!
    Ich weiß nicht wie das im Englischen heißt!
    Aber unter PC-Einstellungen / System / Benachrichtigungen & Aktionen
    kann man unten einzelnen Programmen erlauben oder verbieten

  • JavaScript ist aktiviert, soll aber aktiviert werden

    • Mira_Belle
    • 13. Juni 2026 um 08:03
    Zitat von bug99

    sein legaler Win7-key müsste auch funktionieren...

    Ich denke nicht. Ich meine, gelesen zu haben, dass MS diese Möglichkeit des Upgrades von W7 zu W10 oder W11 abgeschafft hat.
    Aber es gibt ja so viele Möglichkeiten vorübergehend sich eine Verschnaufpause zu verschaffen.

    An seiner Stelle würde ich wirklich Linux testen, wenn es denn kein neuer Rechner werden soll.
    Kann man ja zu Anfang erst einmal von Stick booten.

  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 13. Juni 2026 um 07:42

    juzzlukin
    Please post the script you're currently using, regardless of the language!

    I'll take a look at it and, if necessary, insert an icon directly from Firefox for testing.

    I'll also check what you might have messed up, because it's not the label that should appear in yellow, but the icon—if it's an SVG.


    My “new” script always opens Firefox's about:addons page whenever Firefox restarts.

    Unfortunately, I can't fix that.

    Why not try a different script with a button?

    Either the one from #3 or the one from #7.

    They both work!

  • JavaScript ist aktiviert, soll aber aktiviert werden

    • Mira_Belle
    • 12. Juni 2026 um 23:55

    Sorry, jetzt hast Du mich aber getriggert!
    1. Hat der Support von Microsoft selbst auf dieses Skript verwiesen. [MAS]
    2. Gibt es sehr wohl noch ganz normale Windows 10 Lizenzen!

    Was die IoT Geschichte angeht, das juckt MS nicht die Bohne!
    Sofern es Privatanwender betrifft.

  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 12. Juni 2026 um 23:41

    juzzlukin
    Sorry, but I'm stuck here!
    My knowledge of JavaScript and the Firefox code isn't enough to handle this.
    I just can't figure it out right now.
    You'll have to live with it for now and close the tab manually.

    It's annoying and I don't like it either, but... I'm sorry.

  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 12. Juni 2026 um 22:12

    Ah, ok muss ich mal genauer prüfen, so sollte es natürlich nicht sein.

    Und was ist mit dem Button?

  • Off-Topic aus: Firefox View

    • Mira_Belle
    • 12. Juni 2026 um 20:30

    Tja, so sind die "Geschmäcker" halt verschieden!
    Wenn so gar nichts los ist, so um mich herum, sterbe ich vor Langeweile.
    Ich brauche die Wahl! Und auch auf der "AIDA" habe ich immer auch einen Rückzugsort für mich gefunden,
    wenn mir danach war.
    Mit AIDA war ich bisher 4* unterwegs, 3* eher auf den kleineren Schiffen, aber auch das Größere, war jetzt nicht so "Gewaltig"!
    Freunde von mir waren auf so einem amerikanischen Riesen! DAS wäre nichts für mich.
    Zumal die Amies nur am Fressen uns Saufen sind, aber so ein Pott ist dann doch einfach zu groß.

    So eine Flussschifffahrt käme für mich nur infrage, wenn die nur über Nacht fahren und es bei Tage etwas Interessantes zu sehen gäbe. OK, womöglich gäbe es ja auch schöne Landschaften zu bewundern, brauch ich aber nicht unbedingt.

    Ich bin gespannt wie Mein Schiff so ist. Die haben ja ein komplett anderes Konzept als AIDA.

  • Off-Topic aus: Firefox View

    • Mira_Belle
    • 12. Juni 2026 um 17:12
    Zitat von edvoldi

    Der Grundpreis ist zwar geringer aber alles ander ist teurer.

    Was ist alles andere?
    War bisher immer mit ADIA unterwegs, ist halt ein eigenes Konzept.
    Jetzt wird Mein Schiff ausprobiert, mal schauen.

  • JavaScript ist aktiviert, soll aber aktiviert werden

    • Mira_Belle
    • 12. Juni 2026 um 14:26
    Zitat von schlingo

    Hallo :)

    da der Support in wenigen Monaten ausläuft, wäre die Halbwertszeit aber ziemlich kurz. Deshalb ...

    ... könnte man auch noch einen anderen Weg einschlagen, der zwar laut MS und deren Lizenzbestimmungen nicht erlaubt ist,
    aber nach deren Aussage immer noch besser ist, als zur Konkurrenz zu wechseln.
    Zumal ich auch bisher noch nie gehört habe, dass sie DAS bei privaten Anwendern in irgendeiner Form geahndet hätten.
    Es ist denen schlichtweg egal!

    Aber eine Anleitung wird es von mir nicht geben! Mach Dir also keine Sorgen. :*

  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 11. Juni 2026 um 23:20

    juzzlukin Bis auf Kleinigkeiten ist die Übersetzung verständlich!
    Das mit dem Button verstehe ich nicht, da hier bei mir alles funktioniert wie es soll.
    Kannst Du mal ein "Filmchen" davon machen?

    Apart from a few minor details, the translation is clear!
    I don't understand what's going on with the button, because everything is working fine for me.
    Could you film a quick video of it?


    Zitat von juzzlukin

    Können Sie mir sagen, wie ich das Skript so bearbeiten muss, dass es auf ein Symbol verweist?

    Also, in deinem Profilordner, z.B. umilg7ve.juzzlukin, befindet sich ein Ordner "chrome",
    in diesem wiederum ein Ordner "icons" in welchem sich das Symbol befinden sollte.

    So, in your profile folder - for example, umilg7ve.juzzlukin - there is a folder called “chrome,” and inside that folder
    is a folder called “icons,” where the icon should be located.

    Sieht dann so aus =>
    It should look like this =>

    C:\Users\juzzlukin\AppData\Roaming\Mozilla\Firefox\Profiles\umilg7ve.juzzlukin\chrome\icons

    Oder so ähnlich.
    Or something like that.

  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 11. Juni 2026 um 18:41
    Zitat von Boersenfeger

    Da ging es um mein Script ...

    ... äh, das ist doch meine Script :D Spaß.

    Da hätte er ja nur das "Icon" austauschen müssen gegen eines, welches er auf Platte hat.
    Aber so wie ich es verstanden habe, funktioniert das Skript, nach dem er es bearbeitet hat,
    gar nicht mehr.

    OK, das mit dem Pfad zum Icon, könnte auch noch so ein Fallstrick sein,
    aber dann hätte es ja dennoch einen Button gegeben, nur halt eben ohne Symbol.

  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 11. Juni 2026 um 16:12
    Zitat von juzzlukin

    It does not appear on my toolbar. I translated it into English. I'm concerned that it may have been altered. Will it work for me in German?

    Sorry, habe ich jetzt erst gesehen!
    Bei Deinem Übersetzungsversuch hast Du aller Wahrscheinlichkeit nach irgendetwas versemmelt!

    Schau Dir das von mir überarbeitete Skript an, besonders den Anfang.
    Der Userkonfigbereich ist ja im Prinzip der gleiche.

    * ----------------------------------------------------------- *

    Sorry, I just saw this now!
    You probably messed something up in your attempt at translation!

    Take a look at the script I revised, especially the beginning.
    The user configuration section is basically the same.

  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 11. Juni 2026 um 10:13

    Ich habe mir erlaubt, das Skript noch einmal zu überarbeiten.
    Ich hoffe, so ist es etwas übersichtlicher, was der Anwender ändern kann
    und was er besser so belässt wie es ist.

    JavaScript
    // Atomatk-Addons-UpDate-Check.uc.js
    // Das Script führt automatisch einen UpDate-Check aus und dies in einem neuen Tab anzeigt.
    // Auch wird ein Button erstellt, der einen UpDate-Check ausführt und dies in einem neuen Tab anzeigt.
    
    // Source file https://www.camp-firefox.de/forum/thema/xxxxxx/?postID=xxxxxxx#postxxxxxxx
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
      "use strict";
    
      // Nur in einem normalen Browserfenster weiterarbeiten.
      if (!window.gBrowser) return;
    
      const
       // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                id = 'addons-update-button', // Id des Buttons  /  Button ID
              link = 'about:addons', // Linkziel des Buttons  /  Button link destination
             label = 'Add-ons Update', // Bezeichnung des Buttons  /  Button label
       tooltiptext = 'Add-ons aktualisieren',  // 'Update add-ons'
       // Icon-------------------------------------------------------
              icon = 'sync.svg',  // [Name.Dateiendung] des Symbols  /  [Name.extension] of the icon
          iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet  /  Path to the folder containing the icon
       // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
       
       // Profilpfad als URI, damit das Icon geladen werden kann.
       // Profile path as a URI so that the icon can be loaded.
        curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
      // SVG-Icons können CSS-Farbangaben übernehmen; das schaltet Firefox dafür frei.
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
    
      const
      // ■■ START ScriptConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      STARTUP_DELAY_MS = 2500,  // Verzögerung nach Firefox-Start, damit die Oberfläche fertig geladen ist.
           MAX_WAIT_MS = 12000, // Maximale Wartezeit darauf, dass about:addons vollständig geladen ist.
               POLL_MS = 250;   // Intervall für wiederholte Prüfungen.
      let
           startupDone = false, // Merkt sich, ob der Startvorgang schon einmal ausgeführt wurde.
                  busy = false; // Verhindert parallele Abläufe.
      // ■■ END ScriptConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    
      //BUTTON
    	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';
                button.style.color = '#ffe10f'; // Farbe für das SVG-Icon setzen
             }
          });
    	} catch(e) {};
    
      // Liefert das aktuellste Browserfenster.
      function getBrowserWindow() {
        return Services.wm.getMostRecentWindow("navigator:browser");
      }
    
      // Öffnet about:addons in einem neuen Tab.
      function openAddonsTab(win) {
        if (!win) return false;
        try {
          win.openTrustedLinkIn(link, "tab");
          return true;
        } catch (e) {
          return false;
        }
      }
    
      // Prüft, ob die Update-Elemente in about:addons schon vorhanden sind.
      function runOriginalAddonActions(doc, win) {
        try {
          const
             options = doc.querySelector("addon-page-options"),                       // Bereich für die Add-ons-Optionen.
           checkItem = doc.querySelector('panel-item[action="check-for-updates"]'),   // Menüpunkt "Check for Updates".
          recentItem = doc.querySelector('panel-item[action="view-recent-updates"]'); // Menüpunkt "View Recent Updates".
    
          // Erst die Ansicht der letzten Updates öffnen.
          if (options && recentItem) {
            recentItem.click();
          }
    
          // Danach die Update-Prüfung auslösen.
          if (options && checkItem) {
            checkItem.click();
          }
    
          // Kurz warten, damit Firefox die Ergebnisse sichtbar aufbauen kann.
          win.setTimeout(function() {
            try {
              const categories = doc.getElementById("categories");
    
              if (categories) {
                const
                // Kategorie "recent updates" anklicken.
                recentBtn = categories.querySelector('button[viewid="addons://updates/recent"]'),
                // Kategorie "available updates" anklicken.
                availableBtn = categories.querySelector('button[viewid="addons://updates/available"]');
    
                if (recentBtn) recentBtn.click();
                if (availableBtn) availableBtn.click();
              }
            } catch (e) {}
    
            // Freigabe für neue Aktionen.
            busy = false;
          }, 1500);
        } catch (e) {
          busy = false;
        }
      }
    
      // Wartet, bis about:addons vollständig geladen ist.
      function waitForAboutAddons(win, fromStartup) {
        const started = Date.now();
    
        function tick() {
          let doc = null;
    
          try {
            doc = win.gBrowser.selectedBrowser.contentDocument;
          } catch (e) {}
    
          // Nur weitermachen, wenn about:addons wirklich geöffnet ist.
          if (doc && doc.URL === "about:addons") {
            try {
              const
              // Prüfen, ob die erwarteten UI-Elemente schon vorhanden sind.
                 options = doc.querySelector("addon-page-options"),
               checkItem = doc.querySelector('panel-item[action="check-for-updates"]'),
              recentItem = doc.querySelector('panel-item[action="view-recent-updates"]');
    
              // Wenn alles da ist, die eigentliche Update-Logik starten.
              if (options && checkItem && recentItem) {
                runOriginalAddonActions(doc, win);
                return;
              }
            } catch (e) {}
          }
    
          // Weiter warten, solange das Zeitlimit nicht überschritten ist.
          if (Date.now() - started < MAX_WAIT_MS) {
            win.setTimeout(tick, POLL_MS);
          } else {
            // Wenn die Zeit abgelaufen ist, wieder freigeben.
            busy = false;
    
            // Beim Start nicht weiter forcieren.
            if (!fromStartup) {
              openAddonsTab(win);
            }
          }
        }
    
        tick();
      }
    
      // Gemeinsame Hauptfunktion für Start und Button.
      function runCheck(fromStartup) {
        if (busy) return;
        busy = true;
    
        const win = getBrowserWindow();
        if (!win) { busy = false;
          return;
        }
    
        // Erst Tab öffnen.
        if (!openAddonsTab(win)) { busy = false;
          return;
        }
    
        // Danach auf fertige Seite warten.
        waitForAboutAddons(win, fromStartup);
      }
    
      // Startprüfung nur einmal ausführen.
      function runStartupCheck() {
        if (startupDone) return;
        startupDone = true;
    
        const win = getBrowserWindow();
        if (!win) return;
    
        // Kleine Verzögerung, damit Firefox vollständig bereit ist.
        win.setTimeout(function() { runCheck(true);
        }, STARTUP_DELAY_MS);
      }
    
      // Observer für den Zeitpunkt, an dem Firefox die Fenster wiederhergestellt hat.
      function onWindowsRestored(subject, topic) {
        if (topic !== "sessionstore-windows-restored") return;
    
        try {
          Services.obs.removeObserver(onWindowsRestored, "sessionstore-windows-restored");
        } catch (e) {}
    
        runStartupCheck();
      }
    
      // Observer registrieren.
      try {
        Services.obs.addObserver(onWindowsRestored, "sessionstore-windows-restored");
      } catch (e) {
        // Falls der Observer nicht verfügbar ist, per Timer versuchen.
        window.setTimeout(runStartupCheck, STARTUP_DELAY_MS);
      }
    
      // Button-Klick-Handler einrichten.
      (function click_button() {
        const button = document.getElementById(id);
    
        if (button) {
          button.addEventListener("click", (event) => {
            // Nur linker Mausklick.
            if (event.button !== 0) return;
    
            // Das richtige Browserfenster ermitteln.
            const win = event.target.documentGlobal || event.target.ownerGlobal;
    
            // Keine parallelen Läufe.
            if (busy) return;
    
            busy = true;
    
            // Verhalten wie beim Start: Tab öffnen und dann prüfen.
            if (!openAddonsTab(win)) { busy = false;
              return;
            }
    
            waitForAboutAddons(win, false);
          });
        } else {
          // Wenn der Button noch nicht existiert, erneut probieren.
          setTimeout(click_button, 100);
        }
      })();
    
    })();
    Alles anzeigen
  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 11. Juni 2026 um 07:50
    Zitat von juzzlukin

    The button on the toolbar is blank.

    Sorry, my English is terrible, so I'm using DeepL.

    For now, I've only translated the first and most important notes in the script!

    JavaScript
    // Atomatk-Addons-UpDate-Check.uc.js
    // Das Script führt automatisch einen UpDate-Check aus und dies in einem neuen Tab anzeigt.
    // Auch wird ein Button erstellt, der einen UpDate-Check ausführt und dies in einem neuen Tab anzeigt.
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
      "use strict";
    
      // Nur in einem normalen Browserfenster weiterarbeiten.
      if (!window.gBrowser) return;
    
      // Interne ID des Buttons in der Firefox-Oberfläche.
      const id = "addons-update-button";
    
      // Zielseite, die geöffnet werden soll.
      const link = "about:addons";
    
      // Sichtbarer Text für den Button.
      const label = "Add-ons Update";
    
      // Tooltip beim Darüberfahren mit der Maus.
      const tooltiptext = "Add-ons aktualisieren";
    
      // Dateiname des Icons.
      const icon = "sync.svg";
    
      // Pfad zum Icon innerhalb deines Profils.
      const iconPath = "/chrome/icons/";
    Alles anzeigen
    Code
    // Atomatk-Addons-UpDate-Check.uc.js
    // This script automatically checks for updates and displays the results in a new tab.
    // It also creates a button that checks for updates and displays the results in a new tab.
    
    /* ----------------------------------------------------------------------------------- */
    /*     	   Please note that the graphics must be located in the correct folder         */
    /*            %appdata%\Mozilla\Firefox\Profiles\"ProfileName"\chrome\icons            */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
      "use strict";
    
      // Nur in einem normalen Browserfenster weiterarbeiten.
      if (!window.gBrowser) return;
    
      // The button's internal ID in the Firefox interface.
      const id = "addons-update-button";
    
      // The landing page to be opened.
      const link = "about:addons";
    
      // Text to display on the button.
      const label = "Add-ons Update";
    
      // Tooltip when you hover over it with the mouse.
      const tooltiptext = "Add-ons aktualisieren";
    
      // The icon's filename, including the file extension.
      const icon = "sync.svg";
    
      // Path to the icon in your profile.
      const iconPath = "/chrome/icons/";
    Alles anzeigen

    I hope this helps.

    And here's a link to the best translation tool I know of.

    DeepL AI Platform: Translation, Voice & API
    Explore our AI suite and get more done: Translate speech, text, and media, or integrate the DeepL API.
    www.deepl.com
  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 10. Juni 2026 um 16:18

    Das Thema fand ich faszinierend!
    Daher habe ich mich mal daran getraut und "mein" Skript etwas umgebaut!

    Was das "neue" Skript macht.

    • Button-Anlage: Erzeugt den Button in der Firefox-Navigationsleiste.
    • Startup-Observer: Wartet, bis Firefox nach dem Start wirklich bereit ist.
    • Tab-Öffnung: Öffnet about:addons in einem neuen Tab.
    • DOM-Wartefunktion: Prüft wiederholt, ob die Add-ons-Oberfläche geladen ist.
    • Update-Klicks: Klickt dann die passenden Einträge in der Oberfläche an, damit Updates sichtbar werden.
    • Button-Handler: Macht denselben Ablauf manuell per Klick.


    Und wie immer der Hinweis, dass da KI die Finger im Spiel hatte!
    Dieses Mal ist perplexity.ai an allem Schuld.

    Und hier das Skript für alle, die es ausprobieren und testen wollen.

    JavaScript
    // Atomatk-Addons-UpDate-Check.uc.js
    // Das Script führt automatisch einen UpDate-Check aus und dies in einem neuen Tab anzeigt.
    // Auch wird ein Button erstellt, der einen UpDate-Check ausführt und dies in einem neuen Tab anzeigt.
    
    // Source file https://www.camp-firefox.de/forum/thema/xxxxxx/?postID=xxxxxxx#postxxxxxxx
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
      "use strict";
    
      // Nur in einem normalen Browserfenster weiterarbeiten.
      if (!window.gBrowser) return;
    
      // Interne ID des Buttons in der Firefox-Oberfläche.
      const id = "addons-update-button";
    
      // Zielseite, die geöffnet werden soll.
      const link = "about:addons";
    
      // Sichtbarer Text für den Button.
      const label = "Add-ons Update";
    
      // Tooltip beim Darüberfahren mit der Maus.
      const tooltiptext = "Add-ons aktualisieren";
    
      // Dateiname des Icons.
      const icon = "sync.svg";
    
      // Pfad zum Icon innerhalb deines Profils.
      const iconPath = "/chrome/icons/";
    
      // Verzögerung nach Firefox-Start, damit die Oberfläche fertig geladen ist.
      const STARTUP_DELAY_MS = 2500;
    
      // Maximale Wartezeit darauf, dass about:addons vollständig geladen ist.
      const MAX_WAIT_MS = 12000;
    
      // Intervall für wiederholte Prüfungen.
      const POLL_MS = 250;
    
      // Profilpfad als URI, damit das Icon geladen werden kann.
      const curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
      // Merkt sich, ob der Startvorgang schon einmal ausgeführt wurde.
      let startupDone = false;
    
      // Verhindert parallele Abläufe.
      let busy = false;
    
      // SVG-Icons können CSS-Farbangaben übernehmen; das schaltet Firefox dafür frei.
      if (Services.prefs.getBoolPref("svg.context-properties.content.enabled") === false) {
        Services.prefs.setBoolPref("svg.context-properties.content.enabled", true);
      }
    
      // Den Button in die Navigationsleiste einfügen.
      try {
        CustomizableUI.createWidget({
          id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label,
          tooltiptext,
          onCreated: (button) => {
            // SVG soll Farbe und Kontur aus CSS übernehmen.
            button.style.MozContextProperties = "fill, stroke, fill-opacity";
    
            // Icon aus deinem Profilordner laden.
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
    
            // Breite nicht zu klein erzwingen.
            button.style.minWidth = "fit-content";
    
            // Icon-Farbe.
            button.style.color = "#ffe10f";
          }
        });
      } catch (e) {}
    
      // Liefert das aktuellste Browserfenster.
      function getBrowserWindow() {
        return Services.wm.getMostRecentWindow("navigator:browser");
      }
    
      // Öffnet about:addons in einem neuen Tab.
      function openAddonsTab(win) {
        if (!win) return false;
        try {
          win.openTrustedLinkIn(link, "tab");
          return true;
        } catch (e) {
          return false;
        }
      }
    
      // Prüft, ob die Update-Elemente in about:addons schon vorhanden sind.
      function runOriginalAddonActions(doc, win) {
        try {
          // Bereich für die Add-ons-Optionen.
          const options = doc.querySelector("addon-page-options");
    
          // Menüpunkt "Check for Updates".
          const checkItem = doc.querySelector('panel-item[action="check-for-updates"]');
    
          // Menüpunkt "View Recent Updates".
          const recentItem = doc.querySelector('panel-item[action="view-recent-updates"]');
    
          // Erst die Ansicht der letzten Updates öffnen.
          if (options && recentItem) {
            recentItem.click();
          }
    
          // Danach die Update-Prüfung auslösen.
          if (options && checkItem) {
            checkItem.click();
          }
    
          // Kurz warten, damit Firefox die Ergebnisse sichtbar aufbauen kann.
          win.setTimeout(function() {
            try {
              const categories = doc.getElementById("categories");
    
              if (categories) {
                // Kategorie "recent updates" anklicken.
                const recentBtn = categories.querySelector('button[viewid="addons://updates/recent"]');
    
                // Kategorie "available updates" anklicken.
                const availableBtn = categories.querySelector('button[viewid="addons://updates/available"]');
    
                if (recentBtn) recentBtn.click();
                if (availableBtn) availableBtn.click();
              }
            } catch (e) {}
    
            // Freigabe für neue Aktionen.
            busy = false;
          }, 1500);
        } catch (e) {
          busy = false;
        }
      }
    
      // Wartet, bis about:addons vollständig geladen ist.
      function waitForAboutAddons(win, fromStartup) {
        const started = Date.now();
    
        function tick() {
          let doc = null;
    
          try {
            doc = win.gBrowser.selectedBrowser.contentDocument;
          } catch (e) {}
    
          // Nur weitermachen, wenn about:addons wirklich geöffnet ist.
          if (doc && doc.URL === "about:addons") {
            try {
              // Prüfen, ob die erwarteten UI-Elemente schon vorhanden sind.
              const options = doc.querySelector("addon-page-options");
              const checkItem = doc.querySelector('panel-item[action="check-for-updates"]');
              const recentItem = doc.querySelector('panel-item[action="view-recent-updates"]');
    
              // Wenn alles da ist, die eigentliche Update-Logik starten.
              if (options && checkItem && recentItem) {
                runOriginalAddonActions(doc, win);
                return;
              }
            } catch (e) {}
          }
    
          // Weiter warten, solange das Zeitlimit nicht überschritten ist.
          if (Date.now() - started < MAX_WAIT_MS) {
            win.setTimeout(tick, POLL_MS);
          } else {
            // Wenn die Zeit abgelaufen ist, wieder freigeben.
            busy = false;
    
            // Beim Start nicht weiter forcieren.
            if (!fromStartup) {
              openAddonsTab(win);
            }
          }
        }
    
        tick();
      }
    
      // Gemeinsame Hauptfunktion für Start und Button.
      function runCheck(fromStartup) {
        if (busy) return;
        busy = true;
    
        const win = getBrowserWindow();
        if (!win) {
          busy = false;
          return;
        }
    
        // Erst Tab öffnen.
        if (!openAddonsTab(win)) {
          busy = false;
          return;
        }
    
        // Danach auf fertige Seite warten.
        waitForAboutAddons(win, fromStartup);
      }
    
      // Startprüfung nur einmal ausführen.
      function runStartupCheck() {
        if (startupDone) return;
        startupDone = true;
    
        const win = getBrowserWindow();
        if (!win) return;
    
        // Kleine Verzögerung, damit Firefox vollständig bereit ist.
        win.setTimeout(function() {
          runCheck(true);
        }, STARTUP_DELAY_MS);
      }
    
      // Observer für den Zeitpunkt, an dem Firefox die Fenster wiederhergestellt hat.
      function onWindowsRestored(subject, topic) {
        if (topic !== "sessionstore-windows-restored") return;
    
        try {
          Services.obs.removeObserver(onWindowsRestored, "sessionstore-windows-restored");
        } catch (e) {}
    
        runStartupCheck();
      }
    
      // Observer registrieren.
      try {
        Services.obs.addObserver(onWindowsRestored, "sessionstore-windows-restored");
      } catch (e) {
        // Falls der Observer nicht verfügbar ist, per Timer versuchen.
        window.setTimeout(runStartupCheck, STARTUP_DELAY_MS);
      }
    
      // Button-Klick-Handler einrichten.
      (function click_button() {
        const button = document.getElementById(id);
    
        if (button) {
          button.addEventListener("click", (event) => {
            // Nur linker Mausklick.
            if (event.button !== 0) return;
    
            // Das richtige Browserfenster ermitteln.
            const win = event.target.documentGlobal || event.target.ownerGlobal;
    
            // Keine parallelen Läufe.
            if (busy) return;
    
            busy = true;
    
            // Verhalten wie beim Start: Tab öffnen und dann prüfen.
            if (!openAddonsTab(win)) {
              busy = false;
              return;
            }
    
            waitForAboutAddons(win, false);
          });
        } else {
          // Wenn der Button noch nicht existiert, erneut probieren.
          setTimeout(click_button, 100);
        }
      })();
    
    })();
    Alles anzeigen
  • extensionsUpdateChecker.uc.js no longer works

    • Mira_Belle
    • 9. Juni 2026 um 21:34

    Mitleser xiaoxiaoflood scheint schon eine weile nicht mehr aktiv zu sein.

    xiaoxiaoflood - Overview
    xiaoxiaoflood has 2 repositories available. Follow their code on GitHub.
    github.com
  • JavaScript ist aktiviert, soll aber aktiviert werden

    • Mira_Belle
    • 6. Juni 2026 um 13:09
    Zitat von WismutKumpel

    Und so manches Linux wurde speziell zum "Abholen" ehemaliger Windows-Nutzer entwickelt, ist also mit recht wenig (unbeliebten) Umstellungen in der Bedienung verbunden.

    Mach doch bitte mal ein paar Vorschläge, denn ich habe auch so meine Probleme für mich das passende "Linux" zu finden.
    Nett wäre es, wenn das "Linux" sich an W7 orientieren würde.

  • JavaScript ist aktiviert, soll aber aktiviert werden

    • Mira_Belle
    • 6. Juni 2026 um 09:36
    Zitat von Jack D.

    Mira_Belle : Kann man denn Win10 jetzt kostenlos irgendwo downloaden, weil nicht mehr aktuell?

    Ja, aber jene Versionen sind nicht mehr aktuell, da auch der Support für Windows 10 bereits abgelaufen ist!
    Wenn Du nicht noch für die ein, zwei Monate ins ESU - Programm einsteigen willst, macht das überhaupt keinen Sinn:!:

Unterstütze uns!

Jährlich (2026)

76,1 %

76,1% (589,79 von 775 EUR)

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