Почтовое сообщение iPhone / iPod Touch уничтожает таймеры JavaScript - PullRequest
1 голос
/ 17 мая 2010

В мобильном сафари на iPhone или iPod Touch, если пользователь нажимает на ссылку mailto, а затем возвращается на страницу (отправка или отмена), таймеры больше не работают внутри javascript. Я опубликовал ошибку в Apple, и на openradar.

Однако мне было интересно, сталкивался ли кто-нибудь с этим раньше и придумал ли какой-то обходной путь.

обновление: вот пример кода

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Testing</title>
    </head>
    <body>
        <h1 id="normal">Normal: 0</h1>
        <h1 id="timed">Timed: 0</h1>
        <h1 id="interval">Interval: 0</h1>
        <a id="clicker">Click Me</a><br />
        <a href="mailto:">Mail To</a>

        <script type="text/javascript">
            window.addEventListener('load', function ()
            {

                var count = 0;
                var interval = 0;
                var id;

                document.getElementById('clicker').addEventListener('click', function () {
                    interval = 0;
                    count++;
                    document.getElementById('normal').innerHTML = 'Normal: ' + count;
                    setTimeout(function () {document.getElementById('timed').innerHTML = 'Timed: ' + count; }, 100);
                    id = setInterval(function ()
                    {
                        interval++;
                        if(interval > 5)
                        {
                            clearInterval(id);
                            return;
                        }

                        document.getElementById('interval').innerHTML = 'Interval: ' + interval;
                    }, 200);
                }, false);

            }, false);
        </script>
    </body>
</html>

Чтобы устранить некоторую очевидную путаницу в отношении того, что я говорю, это ошибка, но это не значит, что когда вы покинете страницу и вернете все таймеры, которые были запущены, остановились, этого следует ожидать. Проблема в том, что если пользователь вернется на страницу, если вы запустите новые таймеры, они никогда не сработают.

1 Ответ

1 голос
/ 17 мая 2010

Это не ошибка, потому что окна браузера фактически закрываются при запуске приложения Почта.Когда пользователь возвращается, он восстанавливается, но все запущенные сценарии будут остановлены.

Хотя это не очень хорошо, ожидается.

...