我用这个命中了死胡同,我的脑袋已经半天了。这个问题很奇怪,如果你愿意查看我的源代码:www.modwebsolutions.com/test2(警告:尚未优化,可能会锁定浏览器几秒钟)。问题是,在Opera中setTimeouts的这个序列可以正常工作,但是在其他浏览器中只有第一个被执行,然后停止脚本的执行。从我的代码Exerpt:setTimeout在Opera中可用,但在其他浏览器中不可用
var a1=setTimeout(drawVertical([arguments]),1000);
var b1=setTimeout(drawVertical([arguments]),1000);
var c1=setTimeout(drawVertical([arguments]),1000);
var d1=setTimeout(drawVertical([arguments)],1000);
尝试一切,在引号引起的功能,寻找其他的语法错误,没有任何帮助。正如我所说的那样奇怪的是 - 在Opera中一切正常。 UPDATE:也适用于Chrome浏览器,这使得它更加混乱......
UPDATE2:同样的例子没有超时,工作得很好(虽然慢):www.modwebsolutions.com/test
尝试了匿名函数方法 - 它在几乎所有的浏览器上都能正常工作,但是......浏览器速度更慢,而且最奇怪的是 - 所有该函数产生的线条也有一些厚厚的黑色阴影,这完全无法解释并且不合逻辑。 setTimeout与画布线样式有什么共同之处?... – Caballero 2011-04-23 20:25:16
'setTimeout'不会导致浏览器变慢,但也许你调用的次数比你想象的要多,因此调用'drawVertical'比你多认为?也许粗黑线是在同一地点附近多次画线的结果?我会在某处放置一个'alert'或者一个'console.log'来确保这个函数按照它应该的方式行事。 – 2011-04-24 06:31:47