Javascript 为什么jQuery on(';加载';,函数(){});如果图像在加载绑定之前加载,是否不激发?IE和本地主机

Javascript 为什么jQuery on(';加载';,函数(){});如果图像在加载绑定之前加载,是否不激发?IE和本地主机,javascript,jquery,internet-explorer,localhost,jquery-load,Javascript,Jquery,Internet Explorer,Localhost,Jquery Load,以下代码在服务器上运行良好,但当我将其拉到本地环境(localhost)或IE上时,负载不会启动 $(document).ready(function (){ $('#img').on('load', function(){ //do something }); }; 我通过浏览器检测和下面的代码解决了IE上的问题,但我想对所有浏览器使用相同的代码 var firstBannerImgSrc = $('#img').attr('src'); var fi

以下代码在服务器上运行良好,但当我将其拉到本地环境(localhost)或IE上时,负载不会启动

$(document).ready(function (){
  $('#img').on('load', function(){
    //do something
  });
};  
我通过浏览器检测和下面的代码解决了IE上的问题,但我想对所有浏览器使用相同的代码

var firstBannerImgSrc = $('#img').attr('src');          
var firstBannerImg = new Image();
firstBannerImg.src = firstBannerImgSrc;             
firstBannerImg.onload = function(){
 //do something
};

有人看到问题了吗?

您应该停止浏览器检测,对所有浏览器使用相同的技术,因为这是两种浏览器中最安全的一种

$(document).ready(function (){
    var $img = $("#img"),
        img = new Image();
    $(img).on('load', function(){
        $img.doSomething();
    }).attr('src', $img.attr('src'));    
});

如果在绑定事件之前加载了映像,那么事件处理程序不执行是完全有意义的,因为事件绑定到之前从未发生过事件。上面的代码在所有浏览器中都避免了这个问题,而作为您的解决方案,只有在图像尚未缓存(由于另一个IE bug)且尚未完成加载(这将发生在未正确实现DOMContentLoaded(如oldIE)的浏览器中)的情况下,才会避免这个问题

如果在绑定事件之前加载图像,为什么会触发?当您绑定事件处理程序时,它会从那一刻起侦听指定的事件,而不会回顾过去。。。(jQuery的文档就绪处理程序是一个例外,因为它被故意定义为即使在DOM就绪后绑定也要执行。)我没有意识到文档就绪处理程序和其他处理程序之间的区别。谢谢