Das Script für Addon-Suche funktionierte auch nicht mehr richtig. Das ist jetzt die Abfolge, in 155 bis 157 getestet:
Das ist jetzt der Ablauf:
Firefox startet (kein Restart).
Die installierten Erweiterungen werden im Hintergrund geprüft.
Es wird nichts automatisch installiert (automatische Updates deaktiviert).
Gibt es keine Updates, passiert gar nichts.
Gibt es Updates, wird genau ein about:addons-Tab geöffnet.
Firefox landet direkt bei „Verfügbare Updates“.
Rechts werden die tatsächlich verfügbaren Updates angezeigt.
Über die Installation wird selbst entschieden.
JavaScript
// addonUpdateNotifier.uc.js
// Firefox 154+
// Version 03.09.2026
// Sucht beim Firefox-Start nach Updates für installierte
// Erweiterungen. Es wird NICHT automatisch installiert.
// Automatisches Update muss deaktiviert sein
// Bei Updates wird direkt "Verfügbare Updates" geöffnet.
(async function() {
if (location.href !== "chrome://browser/content/browser.xhtml")
return;
const { AddonManager } =
ChromeUtils.importESModule(
"resource://gre/modules/AddonManager.sys.mjs"
);
async function checkForUpdates() {
let foundUpdate = false;
let addons =
await AddonManager.getAddonsByTypes([
"extension"
]);
for (let addon of addons) {
if (
!(addon.permissions &
AddonManager.PERM_CAN_UPGRADE)
) {
continue;
}
await new Promise(resolve => {
addon.findUpdates({
onUpdateAvailable(
aAddon,
install
) {
foundUpdate = true;
},
onNoUpdateAvailable() {
},
onUpdateFinished() {
resolve();
}
},
AddonManager.UPDATE_WHEN_USER_REQUESTED);
});
}
/*
* Keine Updates:
* nichts machen.
*/
if (!foundUpdate)
return;
/*
* ========================================================
* UPDATE GEFUNDEN
* ========================================================
*/
let win =
Services.wm.getMostRecentWindow(
"navigator:browser"
);
if (!win)
return;
/*
* Einen neuen about:addons-Tab öffnen.
*/
let tab =
win.gBrowser.addTrustedTab(
"about:addons"
);
win.gBrowser.selectedTab =
tab;
win.focus();
/*
* ========================================================
* ABOUT:ADDONS WARTEN
* ========================================================
*/
let browser =
tab.linkedBrowser;
browser.addEventListener(
"DOMContentLoaded",
function listener() {
browser.removeEventListener(
"DOMContentLoaded",
listener
);
/*
* Jetzt NICHT about:addons#updates laden!
*
* Stattdessen den internen ViewController
* von about:addons benutzen.
*/
selectUpdatesView(
browser
);
},
{
once: true
}
);
}
/*
* ============================================================
* UPDATE-VIEW AUSWÄHLEN
* ============================================================
*/
function selectUpdatesView(browser) {
let tries = 0;
let timer =
setInterval(() => {
tries++;
try {
let win =
browser.contentWindow;
let doc =
browser.contentDocument;
if (!win || !doc) {
if (tries > 200)
clearInterval(timer);
return;
}
/*
* ------------------------------------------------
* Firefox about:addons ViewController
* ------------------------------------------------
*/
let controller =
win.gViewController;
if (!controller) {
if (tries > 200) {
clearInterval(timer);
console.error(
"[AddonUpdateNotifier] " +
"gViewController nicht gefunden."
);
}
return;
}
/*
* ------------------------------------------------
* Direkt die Firefox-View aufrufen.
* ------------------------------------------------
*
* Die gewünschte View lautet:
*
* addons://updates/available
*
* Das ist die View-ID der Kategorie
* "Verfügbare Updates".
*/
clearInterval(timer);
/*
* Je nach Firefox-Version ist die Methode
* loadView() bzw. loadViewInternal() verfügbar.
*/
if (
typeof controller.loadView ===
"function"
) {
controller.loadView(
"addons://updates/available"
);
return;
}
if (
typeof controller.loadViewInternal ===
"function"
) {
controller.loadViewInternal(
"addons://updates/available"
);
return;
}
/*
* ------------------------------------------------
* Fallback:
*
* Kategorie-Button über seine View-ID anklicken.
* ------------------------------------------------
*/
let button =
doc.querySelector(
'[viewid="addons://updates/available"]'
);
if (!button) {
button =
doc.querySelector(
'[name="available-updates"]'
);
}
if (button) {
button.click();
return;
}
console.error(
"[AddonUpdateNotifier] " +
"Keine Möglichkeit gefunden, " +
"'Verfügbare Updates' zu öffnen."
);
} catch (e) {
console.error(
"[AddonUpdateNotifier]",
e
);
if (tries > 200)
clearInterval(timer);
}
}, 100);
}
/*
* ============================================================
* START
* ============================================================
*/
setTimeout(
checkForUpdates,
2000
);
})();
Alles anzeigen