javascript - iPhone/iPod Touch mailto 链接破坏了 JavaScript 计时器

标签 javascript iphone mobile-safari mailto

在 iPhone 或 iPod Touch 上的 mobile safari 中,如果用户单击 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>

为了澄清一些明显的困惑,我所说的是一个错误,这并不是说当您离开页面并返回时,任何一直在运行的计时器都已停止,这是可以预料的。问题是,一旦用户返回页面,如果您启动新的计时器,它们将永远不会触发。

最佳答案

这不是一个错误,因为当邮件应用程序启动时,浏览器窗口实际上已关闭。当用户返回时,它会恢复,但正在运行的任何脚本都将停止。

虽然这不是很好,但这是预料之中的。

关于javascript - iPhone/iPod Touch mailto 链接破坏了 JavaScript 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2851617/

相关文章:

javascript - 如何只选中选中的复选框并在 React Native 中获取它的值?

java - 将 java 属性传递给 javascript 函数数组参数

iphone - -[CALayer保留] : message sent to deallocated instance

iphone - 如何在 App Store 中本地化我的应用名称

iphone - 从 safari 返回 iPhone 应用程序

javascript - 如何编写在移动 safari 上查看时不旋转的 javascript 网络应用程序?

javascript - 在 javascript 中遍历 html 数组

javascript - 如何创建一个JavaScript函数,在鼠标移出时淡出音频?

mobile-safari - 光标在 iOS 上移动

在 Mobile Safari 上缓存声音