繁体   English   中英

如何延迟调用javascript函数?

[英]How to delay calling of javascript function?

我是 JavaScript 的新手。

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

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

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

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

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

自 1996 年以来, setTimeout与所有浏览器兼容。您应该避免评估“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()">

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

$(document).ready(function() {

});

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM