如何延迟调用javascript函数?

IT技术 javascript jquery dom-events
2021-03-12 17:26:36

我是 JavaScript 的新手。

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

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

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

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

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

5个回答

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

setTimeout(functionName,5000)

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

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

但是,您调用的是onload错误的,因此您需要执行以下任一操作:

window.addEventListener("load",function() {
  // your stuff
}

或者更简单的

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

或者,由于您使用的是jQuery,因此:

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

或者只是这个:

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

如果您想 100% 确定它是在页面实际加载时,请使用:

$(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

});

或旧风格

<body onload="myFunction()">
好吧,好吧,我用过一次,其他都不起作用(IE6 + 很多脚本,很久以前)。而且我也不喜欢。
2021-04-29 17:26:36
我们不再做旧风格 - 请。
2021-05-03 17:26:36
老式!杀死它!用蝙蝠烧掉它!用火把它砸碎!经验值
2021-05-07 17:26:36

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

$(document).ready(function() {

});

这样它就会在 DOM 完全加载时被调用。

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