설정된 시간이 지나면 자동으로 페이지 로드를 중지하도록 Firefox를 구성하려면 어떻게 해야 합니까?

설정된 시간이 지나면 자동으로 페이지 로드를 중지하도록 Firefox를 구성하려면 어떻게 해야 합니까?

배경 정보:

영원히 로드되는 사이트가 많이 있습니다(특히 실시간 JavaScript 업데이트에 의존하는 사이트). 최신 버전의 Firefox(기본적으로 2015년 이후 버전)는 탭이 로드되기를 기다리는 동안 엄청난 양의 CPU 시간을 사용하며 대부분의 노트북을 과열시킵니다.

문제가 있는 탭으로 전환하고 다시 로드/취소 버튼을 확인하면 끝없는 로드 대기가 분명해집니다. 클릭하여 수동으로 취소할 때까지 X(취소) 표시가 영구적으로 표시됩니다.

내가 요구하는 것:

모든 탭에 최대 로드 시간 제한을 적용하도록 구성 설정을 하고 싶습니다. 지정된 제한 이상으로 로드되는 탭은 자동으로 중지됩니다(취소 버튼을 클릭하는 것과 동일).

실사(물어보기 전에 숙제를 했다는 증거):

나는 이것을 할 수 있는 모든 것을 검색했고 시작하지 않는 많은 것을 발견했습니다.

Google에서 "firefox 제한 최대 페이지 로드 시간"을 검색하면 더 빠른 페이지 로드를 목표로 하는 여러 가지 성능 팁이 나타납니다. 불행하게도 영원히 계속 로드되는 부분적으로 손상된 페이지에서는 거의 쓸모가 없습니다.

이 장소 (http://forums.mozillazine.org/viewtopic.php?f=38&t=2793647) 확장 프로그램을 사용하면 가능하다고 말했지만, 이를 수행하는 확장 프로그램은 없습니다.

Google에서 "firefox 확장 프로그램 제한 페이지 로드 시간"을 검색하면 성능 프로파일링 및 최적화만 찾을 수 있으며 둘 다 관련이 없습니다.

답변1

이전에 누구도 그런 확장을 만든 적이 없는 것 같지만 저는 Firefox 확장의 형태로 뭔가를 성취할 수 있었습니다. 확장 프로그램은 다음에서 다운로드할 수 있습니다.여기. 하지만 좋은 답변을 작성하기 위해 중요한 부분은 다음과 같습니다.

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"
            });
        }
    });
});

이 확장 프로그램은아니다차별하다. 예를 들어, 온라인으로 물건을 구매하는데 예상보다 시간이 조금 더 걸리는 경우, 연장 기간은할 것이다그만해요.

관련 정보