Estoy depurando algunos problemas de inicio/cierre de sesión en un sitio mantenido por un proveedor externo para un cliente y espero que el título explique las cosas, pero hay más detalles a continuación.
Según tengo entendido, cualquier JavaScript que se ejecute en una pestaña oculta en Chrome alterará el valor de cualquier setTimeout a 1000 milisegundos para mantener el rendimiento general del sistema y no desperdiciar recursos. Como se explica en este sitio :
“Los navegadores hacen exactamente esto. Para las pestañas inactivas, aceleran automáticamente los temporizadores para que se ejecuten cada 1 segundo, independientemente del retraso original especificado en el código. Por ejemplo, si el código usaba originalmente setInterval() para ejecutar algún código cada 50 ms, una vez que la aplicación se mueve a una pestaña en segundo plano, el intervalo se convierte automáticamente en 1000 ms (1 segundo) ".
Eso definitivamente tiene sentido en el caso de un valor setTimeout que se establece en menos de 1000 milisegundos, como 50 milisegundos y demás. Pero, ¿qué pasa con los valores superiores a 1.000 milisegundos?
¿Establecerá Chrome el valor setTimeout en 1000 milisegundos aunque 900 000 milisegundos (también conocido como 900 segundos, también conocido como 15 minutos) es claramente más alto que eso?
Aquí hay un fragmento de código de la página web del proveedor que creo que está causando problemas que estoy tratando de ayudar a depurar. No hace su trabajo cuando está en una pestaña oculta.
function keepSessionAlive() { if (externalAdminWindow && externalAdminWindow.closed) { externalAdminWindow = null; } if (externalFGWindow && externalFGWindow.closed) { externalFGWindow = null; } if (externalAdminWindow || externalFGWindow) { $find("ctl00_RadAjaxManager1").ajaxRequest("KeepAlive"); setTimeout(function() { keepSessionAlive(); }, 900000); } }La mayoría de los navegadores aceleran los tiempos de espera en las pestañas inactivas. Significa que todos los setTimeout tendrán un tiempo de espera mínimo de 1000 ms. Todo lo que sea más largo que eso debería funcionar como se esperaba. Entonces, respondiendo a su pregunta, el tiempo de espera de 15 minutos no debería verse afectado.
Consulte la sección Tiempos de espera en pestañas inactivas de setTimeout en setTimeout : https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#timeouts_in_inactive_tabs