如何延迟调用javascript函数?

我是JavaScript的新手。

我想在aspx页面中加载页面后调用JavaScript / jQuery函数。

我尝试使用

window.load = function(){} ,但在某些内容完全加载之前,JavaScript仍然会触发。

是否可以在Page_PreRender期间在aspx页面中调用而不是在代码后面调用,以便我可以延迟JavaScript函数?

我尝试了setTimeout("function()",5000)来解决问题。

但是setTimeout()似乎与某些浏览器不兼容,例如:在Google Chrome中导致循环。

setTimeout自1996年以来与所有浏览器兼容。你应该避免评估“functionName()”,而是:

 setTimeout(functionName,5000) 

更新:如果您最初期望传递给函数的变量而在超时时没有传递,则需要执行以下操作:

 setTimeout(function() { functionName() },5000) 

因为setTimeout会将超时ID传递给函数,如果它像第一个例子中那样被调用。

但是你错误地调用了onload ,所以你需要这样做:

 window.onload=function() { // your stuff } 

或者,因为您使用的是jQuery ,所以:

 $(document).ready(function() { // your stuff }); 

或者只是这样:

 $(function() { // your stuff }); 

如果您想100%确定在ACTUALLY页面加载时,请使用:

 $(window).load(function(){ //After EVERYTHING loads, including images. }) 

另一个解决方案, onload可以工作,但是一旦DOM准备好就会加载,但是当窗口实际完成加载时它不会加载。

如果您要使用jQuery,则最好使用以下方法之一将事件附加到文档就绪事件:

 $(document).ready(callback); 

要么

 $(document).ready(function () { /* do stuff */ }); 

要么

 $(callback); 

要么

 $(function () { /* do stuff */ }); 
 $(document).ready(function(){ //Code goes here }); 

或旧式

  

最好使用像jQuery这样的框架。
在jQuery中,您可以定义一个这样的函数:

 $(document).ready(function() { }); 

这样在DOM完全加载时将调用它。

可以在此处找到ready()函数的完整文档。