[英]setTimeout works in Opera, but not in other browsers
我用这个把它弄死了,已经挠了半天。 如果您想看一下我的源代码,这个问题就很奇怪了:www.modwebsolutions.com/test2(警告:尚未优化,可能会锁定浏览器几秒钟)。 问题是,setTimeouts序列在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中的一切都正常。 更新:在Chrome中也可以使用,这使它更加令人困惑...
UPDATE2:没有超时的相同示例,效果很好(尽管很慢):www.modwebsolutions.com/test
函数和超时后 ,应为函数传递参数。 看一下文档
var a1 = setTimeout(drawVertical, 1000, [arguments]);
您在此处所做的设置超时之前称为函数。 当代码看到drawVertical([arguments])
,它将立即调用该函数。 该函数的返回值是您作为第一个参数传递给setTimeout
,因此,除非drawVertical
返回一个函数,否则该函数将不起作用。
因此,您可以通过给setTimeout
一个函数调用来使其工作:
var args = arguments;
var a1=setTimeout(function() { drawVertical([args]); },1000);
...
编辑:我将外部arguments
设置为args
变量,因为内部函数中的arguments
将不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.