JavaScript Mac Firefox setInterval()很奇怪

时间:2010-03-03 16:09:53

标签: javascript setinterval

我第一次遇到safari的问题,当函数名称未包含在引号中时,设置的间隔会出现不可预测的行为(并且可选地,它会添加括号):

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中测试操作系统和浏览器并将其破解为相应的工作?

1 个答案:

答案 0 :(得分:3)

不要将字符串作为setIntervalsetTimeout的第一个参数传递。您应该传递函数标识符(与setInterval(foo, 50);一样)或传递匿名函数(使用function关键字)。