我希望我们对浏览器的差异感到有点无聊,但这个看起来有点严重。 以下几乎说明了一切:
$(function() {
if (navigator.appName == "Microsoft Internet Explorer") {
$('#imgdiv').imagefit();
}
$('img').bind('load', function() {
$('#imgdiv').imagefit();
});
});
在IE10中,加载事件处理程序似乎没有触发,但如果我将 imagefit()放在 ready()函数中,那么一切都很好。另一方面,如果我在Chrome中执行此操作,则根本不会显示图像。有没有人对此有任何解释?我的猜测是两个浏览器以不同的顺序或其他东西做事。只是确认这是一个公认的问题就好了。
答案 0 :(得分:2)
来自load
事件的jQuery API documentation:
与图片一起使用时
load
事件的注意事项开发人员尝试使用.load()解决的常见问题 快捷方式是在图像(或集合)时执行函数 图像)已完全加载。有几个已知的警告 这应该注意。这些是:
- 它不能始终如一地工作,也不能可靠地跨浏览器
- 如果图像src设置为与之前相同的src,则无法在WebKit中正确触发
- 它没有正确地冒泡DOM树
- 可以停止触发已存在于浏览器缓存中的图像
第一个要点解决了我的假设问题。
我建议将函数调用$('#imgdiv').imagefit();
移到HTML页面的底部。对于外部脚本,延迟脚本可能会有所帮助。