
Información de fondo:
Hay muchos sitios que se cargan constantemente (especialmente aquellos que dependen de actualizaciones de JavaScript en tiempo real). Las versiones modernas de Firefox (básicamente cualquier cosa desde 2015) utilizan una cantidad extrema de tiempo de CPU (y sobrecalientan la mayoría de las computadoras portátiles) mientras esperan que se cargue cualquier pestaña.
La espera interminable para la carga es evidente al cambiar a una pestaña ofensiva y marcar el botón recargar/cancelar. Quedará bloqueado como una X (cancelar) permanentemente hasta que hagas clic en él y lo canceles manualmente.
Lo que estoy pidiendo:
Me gustaría una configuración para imponer un límite de tiempo de carga máximo en todas las pestañas. Cualquier pestaña que se esté cargando por más del límite especificado se detendrá automáticamente (lo mismo que hacer clic en el botón cancelar).
Debida diligencia (prueba de que hice mi tarea antes de preguntar):
Busqué cualquier cosa que pudiera hacer esto y encontré un montón de cosas que no eran iniciales:
Al buscar "firefox restringe el tiempo máximo de carga de la página" en Google, se obtienen una serie de consejos de rendimiento destinados a cargar la página más rápido. Desafortunadamente, eso es de poca utilidad en una página parcialmente rota que sigue cargándose para siempre.
Este sitio (http://forums.mozillazine.org/viewtopic.php?f=38&t=2793647) dijo que se puede hacer con una extensión, aunque no veo ninguna extensión que haga esto.
Al buscar "tiempo de carga de página con límite de extensión de Firefox" en Google solo se encuentran perfiles de rendimiento y optimización, ninguno de los cuales es relevante.
Respuesta1
Si bien parece que nadie ha creado una extensión de este tipo antes, pude lograr algo en forma de una extensión para Firefox. La extensión se puede descargar desdeaquí. Pero para escribir una buena respuesta, aquí está la parte importante:
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"
});
}
});
});
Tenga en cuenta que esta extensión noNOdiscriminar. Por ejemplo, si estás comprando algo en línea y tarda un poco más de lo esperado, la extensiónVOLUNTADpara.