我有一个脚本,是通过另一个脚本动态插入的。该脚本中的代码包装在$(window).load()
事件中,因为它需要加载页面上的所有图像。在一些浏览器中,它工作得很好,但在其他浏览器中,它似乎不会触发,因为在代码运行时页面已经完成了加载。
有没有办法检查和查看页面是否已经通过jQuery或JavaScript完成加载?(包括图片)
在这种情况下,我无法访问原始文档的onload
事件(除了通过加载的脚本对其进行修改之外--但这似乎也存在同样的问题)。
任何想法/解决方案/建议都将不胜感激!
发布于 2009-05-22 03:05:37
您可以尝试设置一个通过超时调用的处理程序,该处理程序将检查图像以查看其属性是否可用。清除load
事件处理程序中的计时器,以便在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
}
发布于 2009-10-16 15:57:58
我写了一个可能有用的插件:http://plugins.jquery.com/project/window-loaded
发布于 2009-05-22 01:58:24
我认为如果你使用$(document).ready而不是$(window).load,你的问题就会自行解决--参见jquery documentation。
https://stackoverflow.com/questions/896083
复制相似问题