Хорошо известно, что Mobile Safari приостанавливает выполнение Javascript на веб-странице, когда
- вы переключаетесь на другую вкладку браузера.
- переключитесь на другое приложение iOS (например, когда вы получаете входящий звонок в телефонное приложение)
Вы можете подписаться на события "на странице" и "страницы", чтобы обнаружить неминуемую приостановку и реактивацию Javascript.
Проблема заключается в том, что эти события не срабатывают, когда переключение табуляции (1.) на мобильном Safari iPad. На iPhone Mobile Safari все отлично, как описано выше.
Это тривиально, чтобы продемонстрировать:
<!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>
Он запускается на iPads (iOS5 и iOS6 Preview3) только при выполнении переключения приложений (2.), а не при переключении табуляции (1.). Все iPhone работают нормально.
Кто-нибудь мог обнаружить неизбежную вкладку в браузере iPad?
Повторная активация Javascript, когда вкладка снова активируется, может быть обнаружена в цикле сердечного ритма, как описано в в этом обсуждении по той же теме.