Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

Firefox setInterval的BUG

  setInterval的功能是每间隔一段时间就执行一次指定的函数,这个间隔的时间是由第二个参数指定的。但是根据W3C的定义,在第二个参数不存在时候应该把它视为0。但在Firefox中如果第二个参数不存在,setInterval会变得像setTimeout只执行一次。
  W3C中规定(dom-windowtimers-setinterval),setInterval的timeout这个参数如果小于10就让它等于10。然后还规定(get-the-timeout),timeout这个参数是来自方法被调用时的第二个参数,并且如果省略这个参数则为0。结合这两条,我们就可以得出第二个参数省略时的默认值是10。
  上面这段引用了过旧版本的文档,最新的规范(dom-windowtimers-setinterval)中这个最小值是4。省略第二个参数时候使用最小值这条性质不变。
  下面是Firefox上的测试: <input id="iterator" value="0" />
<script>
setInterval(function(){
  iterator.value++;
});
</script>
  无论如何,setInterval只执行一次实在是奇葩绝了。但只要不省略这个参数,即使传入undefined也可以使它正常工作。

  测试于:Windows 7 & Firefox 25
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^