[英]jquery loading images dynamically
我有一个img元素,每次我动态更改其src我想获得新图像的宽度(在它完全加载后)
如果图像已经在缓存(?)中,.load()似乎不会触发,但在这种情况下我不想再次加载它,如:
'image.jpg?' + new Date().getTime();
将(?)
最好的方法是什么?
编辑:
$('#test img:first').load(function() {
console.log($(this).width());
});
似乎它不会触发缓存中的图像
.load()
如果图像是在缓存和不会触发onload
的处理程序之前没有安装.src
属性设置在一些浏览器(IE)的图像。
如果图像是使用javascript动态创建的,那么只需确保在设置.src
属性之前分配onload
处理程序。
如果图像在页面HTML中,那么保证为特定图像获取onload事件的唯一方法是在HTML本身中指定onload处理程序。 无法使用javascript为HTML中的图像安装onload处理程序,并确保调用它,因为在运行任何javascript之前可能已经加载了图像。
您可以检查图像是否已加载.complete
属性。
因此,HTML中图像的解决方法是:
var img = $('#test img:first');
if (!img[0].complete) {
img.load(function() {
// onload code here
});
} else {
// image already loaded
}
在现代浏览器中,您可以使用complete
属性来检查图像是否已完成加载,即使它已被缓存。 就像是:
$("#myimg").on('load', function () { /* get new width */ });
if ($("#myimg").attr('src', 'image.jpg').prop('complete')) {
/* get new width */
}
(以防万一.prop
不起作用,你可以使用.get(0).complete
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.