如何延迟调用javascript函数?

sam*_*817 31 javascript jquery dom-events

我是JavaScript的新手.

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

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

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

我试图setTimeout("function()",5000)解决这个问题.

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

mpl*_*jan 73

setTimeout 自1996年以来与所有浏览器兼容.您应该避免评估"functionName()",而是:

setTimeout(functionName,5000)
Run Code Online (Sandbox Code Playgroud)

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

setTimeout(function() { functionName() },5000)
Run Code Online (Sandbox Code Playgroud)

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

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

window.addEventListener("load",function() {
  // your stuff
}
Run Code Online (Sandbox Code Playgroud)

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

window.onload=function() {
  // your stuff
}
Run Code Online (Sandbox Code Playgroud)

或者只是这样:

$(document).ready(function() {
    // your stuff
});
Run Code Online (Sandbox Code Playgroud)


Osc*_*son 5

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

$(window).load(function(){
   //After EVERYTHING loads, including images.
})
Run Code Online (Sandbox Code Playgroud)

另一个解决方案onload可行,但是一旦DOM准备好就会加载,但是当窗口实际完成加载时则不会加载.