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

我有一个脚本,通过另一个脚本动态插入。 该脚本中的代码包含在$(window).load()事件中,因为它要求页面上的图像全部加载。 在某些浏览器中它可以正常工作,但在其他浏览器中似乎没有触发,因为在运行代码时页面已经完成加载。

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

在这种情况下,我无法访问原始文档的onload事件(除了通过加载的脚本更改它 – 但这似乎会出现同样的问题)。

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

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

伪代码

  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 } 

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

如果你使用$(document).ready而不是$(window).load,我认为你的问题会自行解决 – 请参阅jquery文档 。

不知道这是不是你想要的,但是你试过(?):

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

http://docs.jquery.com/Events/ready#fn