Javascript jquery动态加载图像
我有一个img元素,每次动态更改它的src时,我都希望得到新图像的宽度(在它完全加载之后) 如果映像已在缓存中(?),则似乎不会触发.load(),但在这种情况下,我不想再次加载它,因为:Javascript jquery动态加载图像,javascript,jquery,Javascript,Jquery,我有一个img元素,每次动态更改它的src时,我都希望得到新图像的宽度(在它完全加载之后) 如果映像已在缓存中(?),则似乎不会触发.load(),但在这种情况下,我不想再次加载它,因为: 'image.jpg?' + new Date().getTime(); 会(?) 最好的方法是什么 编辑: 如果缓存中的图像已经在现代浏览器中,它似乎不会触发,您可以使用complete属性检查图像是否已完成加载,即使它已缓存。比如: $("#myimg").on('load', function
'image.jpg?' + new Date().getTime();
会(?)
最好的方法是什么
编辑:
如果缓存中的图像已经在现代浏览器中,它似乎不会触发,您可以使用
complete
属性检查图像是否已完成加载,即使它已缓存。比如:
$("#myimg").on('load', function () { /* get new width */ });
if ($("#myimg").attr('src', 'image.jpg').prop('complete')) {
/* get new width */
}
(以防
.prop
不起作用,您可以使用.get(0).complete
)。在现代浏览器中,您可以使用complete
属性检查图像是否已完成加载,即使它已缓存。比如:
$("#myimg").on('load', function () { /* get new width */ });
if ($("#myimg").attr('src', 'image.jpg').prop('complete')) {
/* get new width */
}
(以防万一.prop
不起作用,您可以使用.get(0).complete
)。.load()
不会触发,如果映像在缓存中,并且在某些浏览器(IE)中对映像设置.src
属性之前未安装onload
处理程序
如果图像是用javascript动态创建的,那么只需确保在设置.src
属性之前分配了onload
处理程序
如果图像在HTML页面中,那么保证为该特定图像获得onload事件的唯一方法是在HTML本身中指定onload处理程序。无法为HTML中的图像安装带javascript的onload处理程序并确保调用它,因为在任何javascript运行之前,图像可能已经加载
您可以检查图像是否已加载.complete
属性
因此,HTML中的图像解决方案如下:
var img = $('#test img:first');
if (!img[0].complete) {
img.load(function() {
// onload code here
});
} else {
// image already loaded
}
如果映像在缓存中并且在某些浏览器(IE)中对映像设置.src
属性之前未安装onload
处理程序,.load()
将不会触发
如果图像是用javascript动态创建的,那么只需确保在设置.src
属性之前分配了onload
处理程序
如果图像在HTML页面中,那么保证为该特定图像获得onload事件的唯一方法是在HTML本身中指定onload处理程序。无法为HTML中的图像安装带javascript的onload处理程序并确保调用它,因为在任何javascript运行之前,图像可能已经加载
您可以检查图像是否已加载.complete
属性
因此,HTML中的图像解决方案如下:
var img = $('#test img:first');
if (!img[0].complete) {
img.load(function() {
// onload code here
});
} else {
// image already loaded
}
调用
.load
的代码在哪里?能否将.attr('width')链接到用于更改src的任何代码?你需要发布你的代码并澄清你的问题,这很让人困惑。你调用.load
的代码在哪里?你能把一个.attr('width')链接到你用来更改src的任何代码上吗?你需要发布你的代码并澄清你的问题,这很让人困惑。