Es bien sabido que Mobile Safari se detiene la ejecución de Javascript en una página web cuandocaso Pagehide de conmutación pestaña inminente en Mobile Safari no se dispara cuando se ejecuta en IPAD
- se cambia a diferentes pestaña del navegador interruptor
- a una aplicación de iOS diferente (por ejemplo, cuando se recibe una llamada de la aplicación de teléfono)
usted puede suscribirse a "pagehide" de la ventana y "pageshow" víspera para detectar la suspensión inminente y la reactivación de Javascript.
El problema es que esos eventos No activar cuando pestaña de conmutación de (1) en una iPad Mobile Safari. En un iPhone Mobile Safari todo es bien, tal como se describe arriba.
Es trivial demostrar:
<!DOCTYPE html>
<html>
<head>
<script>
window.addEventListener("pagehide", function(evt){
var logger = document.getElementById('log_id');
logger.innerText = logger.innerText + " pagehide fired!";
}, false);
</script>
</head>
<body>
<div id="log_id"></div>
</body>
</html>
Se dispara en iPads (iOS5 y iOS6 Preview3) sólo cuando hacen App-conmutación (2) y no en la pestaña de conmutación (1). Todos los iPhones funcionan bien.
¿Alguien ha sido capaz de detectar un inminente cambio de pestañas en el navegador del iPad?
La reactivación de Javascript cuando la pestaña vuelve a activarse puede detectarse mediante un latido del ritmo cardíaco como se describe en this discussion of the same topic.
Este evento también se dispara cuando el dispositivo está bloqueado. Puede usar pageshow, que se activará cuando el dispositivo esté desbloqueado y la página se muestre de nuevo. –
¿Has probado [window.onblur] (https://developer.mozilla.org/en-US/docs/Web/API/window.onblur)? Eso podría funcionar. – Uooo