Wie konfiguriere ich Firefox so, dass das Laden von Seiten nach einer festgelegten Zeit automatisch beendet wird?

Wie konfiguriere ich Firefox so, dass das Laden von Seiten nach einer festgelegten Zeit automatisch beendet wird?

Hintergrundinformation:

Viele Websites laden ewig (insbesondere solche, die auf JavaScript-Updates in Echtzeit angewiesen sind). Moderne Versionen von Firefox (im Grunde alles seit 2015) verbrauchen extrem viel CPU-Zeit (und überhitzen die meisten Laptops), während darauf gewartet wird, dass ein Tab geladen wird.

Das endlose Warten auf das Laden wird deutlich, wenn Sie zu einer fehlerhaften Registerkarte wechseln und die Schaltfläche „Neu laden/Abbrechen“ aktivieren. Sie bleibt dauerhaft als X (Abbrechen) hängen, bis Sie darauf klicken und manuell abbrechen.

Was ich verlange:

Ich hätte gerne eine Konfigurationseinstellung, die eine maximale Ladezeitbegrenzung für alle Tabs vorgibt. Jeder Tab, dessen Ladezeit die angegebene Begrenzung überschreitet, wird automatisch gestoppt (dasselbe wie beim Klicken auf die Schaltfläche „Abbrechen“).

Due Diligence (Nachweis, dass ich meine Hausaufgaben gemacht habe, bevor ich gefragt habe):

Ich habe nach etwas gesucht, das dies kann, und bin auf eine Reihe von Dingen gestoßen, die nicht in Frage kommen:

Wenn Sie bei Google nach „Firefox beschränkt maximale Seitenladezeit“ suchen, werden Ihnen eine Reihe von Leistungstipps angezeigt, die auf schnelleres Laden von Seiten abzielen. Leider nützt das wenig, wenn die Seite teilweise kaputt ist und ewig lädt.

Diese Seite (http://forums.mozillazine.org/viewtopic.php?f=38&t=2793647) sagte, dass dies mit einer Erweiterung möglich sei, obwohl ich keine Erweiterungen sehe, die dies tun.

Bei der Suche nach „Firefox-Erweiterung begrenzt Seitenladezeit“ in Google werden nur Angaben zu Leistungsprofilierung und -optimierung gefunden, die jedoch alle nicht relevant sind.

Antwort1

Obwohl es so aussieht, als hätte noch niemand eine solche Erweiterung erstellt, konnte ich doch etwas in Form einer Firefox-Erweiterung erreichen. Die Erweiterung kann heruntergeladen werden vonHier. Aber um eine gute Antwort zu schreiben, hier der wichtige Teil:

background.js

function createAlarm(tabId) {
    function onError(error) {
        console.log(`Error: ${error}`);
    }

    function onGot(item) {
        var timeout = 15;
        if (item.timeout) {
            timeout = item.timeout;
        }
        browser.alarms.create(tabId + '', { delayInMinutes: timeout / 60 });
    }

    var getting = browser.storage.sync.get("timeout");
    getting.then(onGot, onError);
}

browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
    var id = tabId + '';
    if ("status" in changeInfo && changeInfo.status === "loading") {
        browser.alarms.get(id).then((alarm) => {
            if (alarm) {
                browser.alarms.clear(id).then((good) => {
                    createAlarm(id);
                });
            }
            else {
                createAlarm(id);
            }
        });
    }
});

browser.alarms.onAlarm.addListener((alarm) => {
    var tabId = parseInt(alarm.name);
    browser.tabs.get(tabId).then((tab) => {
        if (tab.status === "loading") {
            browser.tabs.executeScript(tabId, {
                code: "window.stop(); document.title = 'TIMED OUT | '+document.title;",
                allFrames: true,
                runAt: "document_start"
            });
        }
    });
});

Beachten Sie, dass diese ErweiterungNICHTdiskriminieren. Wenn Sie beispielsweise etwas online kaufen und es etwas länger dauert als erwartet, die VerlängerungWILLEHör auf.

verwandte Informationen