【问题标题】:How to delay calling of javascript function?如何延迟调用javascript函数?
【发布时间】:2019-11-19 17:51:15
【问题描述】:

我是 JavaScript 新手。

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

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

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

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

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

【问题讨论】:

  • $(function(){}) 不适合你吗?

标签: javascript jquery dom-events


【解决方案1】:

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
});

【讨论】:

    【解决方案2】:

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

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

    另一个解决方案,onload 有效,但它会在 DOM 准备好后加载,而不是在窗口实际完成加载时加载。

    【讨论】:

      【解决方案3】:

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

      $(document).ready(callback);
      

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

      $(callback);
      

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

      【讨论】:

        【解决方案4】:
        $(document).ready(function(){ 
        
           //Code goes here
        
        });
        

        还是旧式

        <body onload="myFunction()">
        

        【讨论】:

        • 我们不再做旧式了 - 请。
        • 好的,好的,我用过一次,当时没有其他方法(IE6 + 很多脚本,很久以前)。而且我也不喜欢。
        • 老式!杀了它!用蝙蝠烧它!用火粉碎它!经验
        【解决方案5】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多