我第一次遇到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中测试操作系统和浏览器并将其破解为相应的工作?
答案 0 :(得分:3)
不要将字符串作为setInterval
或setTimeout
的第一个参数传递。您应该传递函数标识符(与setInterval(foo, 50);
一样)或传递匿名函数(使用function
关键字)。