mobile-safari javascript:多个 setTimeouts 或 setIntervals

Posted

技术标签:

【中文标题】mobile-safari javascript:多个 setTimeouts 或 setIntervals【英文标题】:mobile-safari javascript: multiple setTimeouts or setIntervals 【发布时间】:2011-04-07 09:21:42 【问题描述】:

我正在使用 setTimeout 在 ios 和 mobile-safari 上使用 javascript 制作一些动画。

似乎当我同时定义两个超时时,较短的一个不会执行,直到较长的一个得到。

setTimeout(a, 1000);
setTimeout(b, 300);

//it seems that both a and b will be called after 1000ms.

setInterval 似乎也是如此

这是一个已知问题吗? 如果是,是否有解决方法?

谢谢!

【问题讨论】:

【参考方案1】:

这不是它应该发生的方式......我怀疑你可能在其他地方有问题。

在一些不同的浏览器中尝试这个测试:http://jsfiddle.net/V6Ktd/

html

<a href="#" onclick="timetest()">Test</a>
<div>First fired at <span id="resultA"></span></div>
<div>First fired at <span id="resultB"></span></div>

JS:

function timetest() 
    setTimeout(function() 
        document.getElementById("resultA").innerText = "a:" + new Date().getTime();
     , 1000);
     setTimeout(function() 
        document.getElementById("resultB").innerText = "b:" + new Date().getTime();
     , 30);

点击测试后在 Chrome 中我看到:

First fired at a:1302168904051
First fired at b:1302168903081

我在 Mobile Safari 中看到了类似的结果。

【讨论】:

以上是关于mobile-safari javascript:多个 setTimeouts 或 setIntervals的主要内容,如果未能解决你的问题,请参考以下文章

动态添加 HTML5 日期元素 iOS Safari

让 WebSocket 在 Mobile Safari 中保持活跃

JavaScript介绍

javascript的题。

javascript JavaScript isset()等效: - JavaScript

JavaScript 使用JavaScript更改CSS(JavaScript)