
背景資料:
有很多網站會永遠載入(尤其是那些依賴即時 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"
});
}
});
});
請記住,此擴充功能確實不是辨析。例如,如果您在網上購買商品並且花費的時間比預期要長一些,則擴展程序將要停下來。