如何延迟调用javascript函数?

时间:2011-04-06 16:48:18

标签: javascript jquery javascript-events

我是JavaScript的新手。

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

我尝试使用<form onload="function()">window.load = function(){},但在某些内容完全加载之前,JavaScript仍会触发。

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

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

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

5 个答案:

答案 0 :(得分:70)

自1996年以来,

setTimeout与所有浏览器兼容。您应该避免评估“functionName()”而是:

setTimeout(functionName,5000)

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

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

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

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

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

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

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

或只是这个:

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

答案 1 :(得分:5)

如果你想100%确定当页面实际加载时,请使用:

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

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

答案 2 :(得分:3)

如果你打算使用jQuery,那么最好使用以下方法之一将事件附加到文档就绪事件:

$(document).ready(callback);

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

$(callback);

$(function () { /* do stuff */ });

答案 3 :(得分:1)

$(document).ready(function(){ 

   //Code goes here

});

或旧式

<body onload="myFunction()">

答案 4 :(得分:0)

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

$(document).ready(function() {

});

这种方式将在DOM完全加载时调用。

可以找到ready()函数的完整文档here