繁体   English   中英

setTimeout可在Opera中使用,但不能在其他浏览器中使用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM