IE10似乎没有激活加载事件

时间:2013-08-13 13:31:16

标签: jquery google-chrome load internet-explorer-10

我希望我们对浏览器的差异感到有点无聊,但这个看起来有点严重。 以下几乎说明了一切:

$(function() {
    if (navigator.appName == "Microsoft Internet Explorer") {
        $('#imgdiv').imagefit();
    }

    $('img').bind('load', function() {
        $('#imgdiv').imagefit();
    });
});

在IE10中,加载事件处理程序似乎没有触发,但如果我将 imagefit()放在 ready()函数中,那么一切都很好。另一方面,如果我在Chrome中执行此操作,则根本不会显示图像。有没有人对此有任何解释?我的猜测是两个浏览器以不同的顺序或其他东西做事。只是确认这是一个公认的问题就好了。

1 个答案:

答案 0 :(得分:2)

来自load事件的jQuery API documentation

  

与图片一起使用时load事件的注意事项

     

开发人员尝试使用.load()解决的常见问题   快捷方式是在图像(或集合)时执行函数   图像)已完全加载。有几个已知的警告   这应该注意。这些是:

     
      
  • 它不能始终如一地工作,也不能可靠地跨浏览器
  •   
  • 如果图像src设置为与之前相同的src,则无法在WebKit中正确触发
  •   
  • 它没有正确地冒泡DOM树
  •   
  • 可以停止触发已存在于浏览器缓存中的图像
  •   

第一个要点解决了我的假设问题。

我建议将函数调用$('#imgdiv').imagefit();移到HTML页面的底部。对于外部脚本,延迟脚本可能会有所帮助。