javascript - personalizado - ¿Motivo para borrar Intervalo antes de descargar la ventana?
mensaje de confirmacion bootstrap (1)
Como se menciona en los comentarios, este código se agregó a History.js para compatibilidad con Env.js.
Env.js es un navegador sin cabeza escrito en JavaScript que ya no se encuentra en desarrollo activo. Así que este es definitivamente un caso extremo, por decir lo menos. Supongo que este problema está causado por una limitación del propio JavaScript.
El usuario Lance Leonard ha señalado en los comentarios que existe un posible problema de pérdida de memoria en IE 10 .
Me he dado cuenta en un par de bibliotecas de JavaScript que hacen uso de setInterval
, que la biblioteca vinculará un detector de eventos al evento de unload
la window
, para borrar todos los intervalos creados usando clearInterval
.
Un ejemplo es History.js que mantiene una "Lista de intervalos configurados, que se borrará cuando el documento esté descargado" .
Retazo:
// ====================================================================
// Interval record
/**
* History.intervalList
* List of intervals set, to be cleared when document is unloaded.
*/
History.intervalList = [];
/**
* History.clearAllIntervals
* Clears all setInterval instances.
*/
History.clearAllIntervals = function(){
var i, il = History.intervalList;
if (typeof il !== "undefined" && il !== null) {
for (i = 0; i < il.length; i++) {
clearInterval(il[i]);
}
History.intervalList = null;
}
};
El oyente de eventos que llama a esta función en el evento de unload
se agrega aquí .
Retazo:
/**
* Clear Intervals on exit to prevent memory leaks
*/
History.Adapter.bind(window,"unload",History.clearAllIntervals);
Entonces, mi pregunta es, ¿por qué algunos autores de JavaScript hacen esto? Parece que estos intervalos se borrarán automáticamente cuando los navegadores salgan de la página (nunca lo he visto hacer de otra manera). ¿Hay una ventaja para hacer esto? ¿Compensa un error de navegador de algún tipo? Si es así, ¿qué error y a qué navegadores afecta?