首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何判断$(window).load()/window.onload事件是否已经触发?

如何判断$(window).load()/window.onload事件是否已经触发?
EN

Stack Overflow用户
提问于 2009-05-22 01:51:55
回答 5查看 42.6K关注 0票数 12

我有一个脚本,是通过另一个脚本动态插入的。该脚本中的代码包装在$(window).load()事件中,因为它需要加载页面上的所有图像。在一些浏览器中,它工作得很好,但在其他浏览器中,它似乎不会触发,因为在代码运行时页面已经完成了加载。

有没有办法检查和查看页面是否已经通过jQuery或JavaScript完成加载?(包括图片)

在这种情况下,我无法访问原始文档的onload事件(除了通过加载的脚本对其进行修改之外--但这似乎也存在同样的问题)。

任何想法/解决方案/建议都将不胜感激!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-05-22 03:05:37

您可以尝试设置一个通过超时调用的处理程序,该处理程序将检查图像以查看其属性是否可用。清除load事件处理程序中的计时器,以便在load事件首先发生时不会触发计时器。如果属性不可用,则load事件尚未触发,并且您知道处理程序最终将被调用。如果是,那么您就知道load事件是在设置处理程序之前发生的,您可以简单地继续。

伪码

代码语言:javascript
运行
复制
 var timer = null;
 $(function() {
    $(window).load( function() {
        if (timer) {
           clearTimeout(timer);
           timer = null;
        }
        process();
    });
    timer = setTimeout( function() {
        if (checkAvailable())
           process();
        }
    }, 10*1000 ); // waits 10 seconds before checking
 });

 function checkAvailable()
 {
     var available = true;
     $('img').each( function() {
         try {
             if (this.height == 0) {
                available = false;
                return false;
             }
         }
         catch (e) {
             available = false;
             return false;
         }
      });
      return available;
  }

  function process() {
      ... do the real work here
  }
票数 7
EN

Stack Overflow用户

发布于 2009-10-16 15:57:58

我写了一个可能有用的插件:http://plugins.jquery.com/project/window-loaded

票数 5
EN

Stack Overflow用户

发布于 2009-05-22 01:58:24

我认为如果你使用$(document).ready而不是$(window).load,你的问题就会自行解决--参见jquery documentation

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/896083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档