我正在尝试这样做:
$("#home .items:last-child img").load(function() { ....... });
img标签如下所示:
<img onmouseout="this.src = '/images/IMG01.jpg'" onmouseover="this.src = '/images/IMG02.jpg'" src="/images/IMG01.jpg" alt="" />
在Firefox,Chrome和Opera中,它似乎运行良好。
但是在Safari和IE10中,它不起作用。在这两个浏览器中,load()
函数仅在鼠标悬停操作时才会被激活。看起来它正在等待鼠标悬停图像加载。我如何确保这有效?
答案 0 :(得分:2)
问题可能是您的图片被缓存,因此不需要加载。
jQuery documentation states that load
is not reliable across browsers:
与图片一起使用时加载事件的注意事项
开发人员尝试使用.load()
快捷方式解决的常见挑战是在图像(或图像集合)完全加载时执行函数。应该注意有几个已知的警告。这些是:
有些人建议在图片网址中添加缓存无效阻隔条。但是,您失去了缓存http://css-tricks.com/snippets/jquery/fixing-load-in-ie-for-cached-images/
的好处我认为一个问题较少的方法是轮询image.complete
属性以了解图像已完成加载。
function waitUntilComplete(img, cb) {
if (img.complete) {
cb(img)
}
else {
setTimeout(function() {
waitUntilComplete(img, cb);
}, 100); // Whatever polling delay you'd like
}
}