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>
私が言っていることはバグであるという明らかな混乱を解消するために、ページを離れて、実行されていたタイマーが停止したときに戻ると、これは予期されることではありません。問題は、新しいタイマーを開始した場合にユーザーがページに戻ると、タイマーが起動しないことです。