【问题标题】:Do something AFTER the page has loaded completely在页面完全加载后做一些事情
【发布时间】:2025-12-09 17:20:07
【问题描述】:

我正在使用一些将 HTML 动态插入页面的嵌入代码,由于我必须修改动态插入的 HTML,我希望 jquery 函数等到页面加载完毕,我尝试了delay,但似乎没有上班。

例如,动态插入的 HTMl 有一个元素 div#abc

我有这个 jquery:

if ( $('#abc')[0] ) { 
  alert("yes");
}

警报不显示。

感谢您的帮助

谢谢

【问题讨论】:

  • 取决于您在何处/如何插入具有 div#abc 的动态 html
  • div#abc 是如何添加到 HTML/DOM 中的?
  • 嗯..例如google plus一个嵌入代码,我在我的html中放置了一个javascript,它又加载了一个iframe和其他div,我想修改其中一个元素

标签: javascript jquery load


【解决方案1】:
$(window).load(function () {
    ....
});

如果您必须等待 iframe(并且不关心资产,只关心 DOM) - 试试这个:

$(document).ready(function() { 
    $('iframe').load(function() { 
       // do something
    });
});

【讨论】:

  • 可能是因为嵌入代码在 iframe 中和/或异步插入 html 吗?
  • 等待当前页面上的所有资产。你也有 iframe 等待吗?
  • 是的,不只是当前页面
  • 更新了 iframe 的答案
  • 仍然没有警报,因为 iframe 也不存在于当前页面中,它是通过嵌入代码通过 javascript 添加的。
【解决方案2】:

这就是jQuery's .ready()事件的目的:

$(document).ready(function() {
    if ( $('#abc').length ) //If checking if the element exists, use .length
        alert("yes");
});

说明:指定当 DOM 满时执行的函数 已加载。

【讨论】:

  • 詹姆斯说得对。查看文档:api.jquery.com/ready .. DOM 将被加载并准备好在调用时进行操作。
  • 作为一个简短的说明......我相信 window.load 和 jQuery.ready 之间的区别在于 window.load 等到 all 资产(例如样式表,图像等)在调用之前已经下载,而 jQuery.ready 会在 DOM 加载后立即触发,并且不关心图像等是否仍在加载。
  • “动态插入HTML到页面的嵌入代码”可以很好的在ready事件触发后添加到DOM中。
【解决方案3】:

使用jQuery.ready 就足够了。试试这个

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

$(function(){

});

这是第一个的快捷方式。

【讨论】:

    【解决方案4】:

    load() 方法在 jQuery 版本 1.8 中已弃用,并在版本 3.0 中删除。 所以你必须使用 -

    $(window).on('load', function() {
     // code here
    });
    

    【讨论】:

    • 纯代码答案是低质量的答案。解释一下为什么这个代码 sn-p 会起作用。
    【解决方案5】:

    试试这个:

    $(document).ready(function () {
        if ( $('#abc')[0] ) { 
          alert("yes");
        }
    });
    

    【讨论】:

      【解决方案6】:
      $(window).load(function () { ... }
      

      就足够了,但您的嵌入代码(无论是什么)可能会提供一些您可以使用的回调功能。

      delay() 只能用于延迟animations

      【讨论】:

      • load() 在 jquery 1.8 之后被弃用
      【解决方案7】:

      一般来说,要在页面加载之前或之后处理我的 JQuery,将使用:

      jQuery(function($){
          // use jQuery code here with $ formatting
          // executes BEFORE page finishes loading
      });
      
      jQuery(document).ready(function($){
          // use jQuery code here with $ formatting
          // executes AFTER page finishes loading
      });
      

      【讨论】:

        【解决方案8】:

        让你将事件与 dom load 绑定,以便在调用触发器时它就在那里。 这就是你的做法。希望有一天这对某人有所帮助

        $(window).bind("load", function() { 
           //enter code here
           $("#dropdow-id").trigger('change');
        });`
        

        【讨论】:

          最近更新 更多