我有一个通过另一个脚本动态插入的脚本。该脚本中的代码包含在$(window).load()
事件中,因为它要求页面上的图像已全部加载。在某些浏览器中它可以正常工作,但在其他浏览器中它似乎不会触发,因为在代码运行时页面已经完成加载。
有什么方法可以检查页面是否已经完成加载 - 通过 jQuery 或 JavaScript?(包括图片)
在这种情况下,我无法访问onload
原始文档的事件(除了通过加载的脚本更改它 - 但这似乎会出现同样的问题)。
任何想法/解决方案/建议将不胜感激!
我有一个通过另一个脚本动态插入的脚本。该脚本中的代码包含在$(window).load()
事件中,因为它要求页面上的图像已全部加载。在某些浏览器中它可以正常工作,但在其他浏览器中它似乎不会触发,因为在代码运行时页面已经完成加载。
有什么方法可以检查页面是否已经完成加载 - 通过 jQuery 或 JavaScript?(包括图片)
在这种情况下,我无法访问onload
原始文档的事件(除了通过加载的脚本更改它 - 但这似乎会出现同样的问题)。
任何想法/解决方案/建议将不胜感激!
您可以尝试设置一个通过超时调用的处理程序,该处理程序将检查图像以查看它们的属性是否可用。清除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(){
...
});