2013-02-02 56 views
1

有人可以帮我请,我想让这个JavaScript启动它的功能后,使用超时3秒延迟。添加超时延迟到JavaScript?

我仍然在学习javascript和jquery,并会很感激,如果有人能告诉我哪里会出错,以及如何解决它。

谢谢。

<script type="text/javascript"> 
    setTimeout(function(){ 
window.onload = function showPopUp(el) { 
var cvr = document.getElementById("cover") 
var dlg = document.getElementById("dialog") 
cvr.style.display = "block" 
dlg.style.display = "block" 
if (document.body.style.overflow = "hidden") { 
    cvr.style.width = "1024" 
    cvr.style.height = "100&#37;" 
    } 
} 
},3000); 

</script> 
+0

你真的应该点击这里:http://jsbeautifier.org/ –

回答

1

这是错误的:

setTimeout(function() { 
    window.onload = function showPopUp(el) { 

此分配在3秒后的处理程序onload,通过该时间窗口可能已经已经加载。


摆脱window.onload = function showPopUp(el) {...}部分,等待脚本加载3秒钟。

setTimeout(function() { 
    var cvr = document.getElementById("cover") 
    var dlg = document.getElementById("dialog") 
    cvr.style.display = "block" 
    dlg.style.display = "block" 
    if (document.body.style.overflow = "hidden") { 
     cvr.style.width = "1024" 
     cvr.style.height = "100&#37;" 
    } 
}, 3000); 

或逆转setTimeoutwindow.onload来完成加载的所有资源后,等待3秒。

window.onload = function showPopUp(el) { 
    setTimeout(function() { 
     // ... 
    }, 3000); 
}; 
2

因此,在短期,你有这样的:

setTimeout(function() { 
    window.onload = function() { 
     // do stuff... 
    } 
}, 3000); 

这是行不通的。这就是说,3秒后,为窗口的onload事件分配一个处理程序。此时事件已经(很有可能)被解雇。所以这个功能不会执行。

相反,翻转它。

window.onload = function() { 
    setTimeout(function() { 
     // do stuff... 
    }, 3000); 
} 

所以在这里,当窗口加载时,你在3秒钟后做一些事情。