是否可以通过jQuery事件检测到何时加载了所有图像?
理想情况下,应该有一个
$(document).idle(function()
{
}
或
$(document).contentLoaded(function()
{
}
但我找不到这样的东西。
我想像这样附加一个事件:
$(document).ready(function()
{
var imageTotal = $('img').length;
var imageCount = 0;
$('img').load(function(){if(++imageCount == imageTotal) doStuff();});
}
但是,如果图像加载失败,这会中断吗?在正确的时间调用该方法是至关重要的。
发布于 2009-07-10 15:08:13
如果您不想检查所有图像,但要检查特定的图像(例如,在DOM完成后动态替换的图像)您可以使用以下命令:
$('#myImage').attr('src', 'image.jpg').on("load", function() {
alert('Image Loaded');
});
发布于 2012-08-15 09:59:12
根据this answer,您可以在window
对象上使用jQuery load event,而不是document
jQuery(window).load(function() {
console.log("page finished loading now.");
});
这将在页面上的所有内容加载完成后触发。这与jQuery(document).load(...)
不同,后者是在DOM加载完成后触发的。
发布于 2012-04-07 17:21:03
如果你需要一个跨浏览器的解决方案,imagesLoaded插件是个不错的选择
$("<img>", {src: 'image.jpg'}).imagesLoaded( function( $images, $proper, $broken ){
if($broken.length > 0){
//Error CallBack
console.log('Error');
}
else{
// Load CallBack
console.log('Load');
}
});
如果你只需要一个IE WorkAround,这就可以了
var img = $("<img>", {
error: function() {console.log('error'); },
load: function() {console.log('load');}
});
img.attr('src','image.jpg');
https://stackoverflow.com/questions/910727
复制相似问题