E 'ben noto che Safari Mobile mette in pausa l'esecuzione JavaScript su una pagina web quandoevento Pagehide sulla commutazione scheda imminente Safari Mobile non si attiva durante l'esecuzione su iPad
- si passa a diversa scheda del browser
- interruttore per un diverso iOS (ad esempio quando si riceve una chiamata il telefono app)
è possibile iscriversi alla "pagehide" della finestra e "pageshow" eve nts per rilevare la sospensione imminente e la riattivazione di Javascript.
Il problema è che quegli eventi non vengono attivati quando tab-switching (1) su un iPad Safari Mobile. Su un iPhone Mobile Safari tutto è multa, proprio come descritto sopra.
E 'banale per dimostrare:
<!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>
Spara su iPad (iOS5 e iOS6 Preview3) solo quando facendo app-switching (2.) e non sulla scheda-switching (1.). Tutti gli iPhone funzionano bene ..
Qualcuno è stato in grado di rilevare una imminente commutazione delle schede sul browser iPad?
Il riattivazione di JavaScript quando la linguetta diventa nuovamente attivo possono essere rilevate da un cuore Beat loop come descritto in this discussion of the same topic.
Questo evento si attiva anche quando il dispositivo è bloccato. Puoi usare pageshow che si attiva quando il dispositivo è sbloccato e la pagina viene mostrata di nuovo. –
Hai provato [window.onblur] (https://developer.mozilla.org/en-US/docs/Web/API/window.onblur)? Potrebbe funzionare. – Uooo