本来认为setTimeout函数只是一个简单的不能再简单的函数,今天汗了一把。
(function(){
.....
try{
document.documentElement.doScroll("left")
}catch(e){
setTimeout(arguments.callee,0);//arguments.callee是闭包函数
return;
}
第二个参数被设置为零,意思就是让其他的“渲染线程”占有cpu,渲染线程和javascript引擎线程互斥,所以当dom内容全部改好以后就不会出现异常了,可以执行下面的函数了。
答案来自于http://stackoverflow.com/questions/779379/why-is-settimeoutfn-0-sometimes-useful
还有一个js单线程的讲解,意外查到的http://www.phpv.net/html/1700.html