1

我第一次遇到了 safari 的问题,当函数名没有用引号括起来(并且可选地用添加的括号接缝)时,set interval 的行为会变得不可预测:

repeatInterval = setInterval("foo()", 50);

将我的代码更改为以这种方式读取后,它似乎在 Mac 版本的 Firefox 中根本没有执行。

我做了一些进一步的测试,确保它在 linux 和 windows 版本(包括 windows 下的 3.0.10 和 3.6)下完全正常工作。引发此问题的唯一组合是 Mac OS X Snow Leopard 上的 Firefox(在本例中为 3.6)。

除非以以下格式编写,否则它根本不起作用:

repeatInterval = setInterval(foo, 50);

这个问题是否有解决方案可以在 Mac 上的所有其他浏览器和 Firefox 中运行,而无需在 javascript 中测试操作系统和浏览器并对其进行相应的破解?

4

1 回答 1

3

不要将字符串作为setIntervalor的第一个参数传递setTimeout。您应该传递一个函数标识符(就像您对 所做的那样setInterval(foo, 50);)或传递一个匿名函数(使用function关键字)。

于 2010-03-03T16:18:00.307 回答