IE上的图像加载事件

时间:2013-05-28 17:11:53

标签: javascript jquery internet-explorer

我正在开发一个网站,我必须将未找到的图像的src设置为错误图像。

方法.load()和.error()总是在IE中工作。 我一直在寻找,我发现了这个:

Issue with IE not calling JQuery .load() function on page refresh - traced to image caching

将查询字符串添加到图像中,始终从服务器加载,并且.load()和.error()方法正常工作,但是网站太大了,我真的无法在网站中加载所有图像每次从服务器,而不是从缓存加载。

有关如何使用此方法的任何想法,无需每次从IE服务器加载服务器的负载,或其他方式来检查图像是否已正确加载或在IE中工作?

提前致谢

2 个答案:

答案 0 :(得分:1)

这是一个非常老的错误,实际上已在除IE之外的所有现代浏览器中修复。 如果从缓存中获取图像,则它们不会触发onload事件。

但是,几年前尝试在javascript中创建图片库的每个人都知道一种解决方法:)

Image DOM元素具有属性.complete,用于指示是否已加载图像。您可以在脚本加载时检查此属性。如果图像在缓存中,img.complete将在页面加载后立即返回:

$('img').each(function(){
    //this code will not run in IE if image is in the cache
    $(this).on('load', function(){
       checkImage(this);
    });

    //this code will run if image is already in the cache
    if (this.complete) checkImage(this);
});

function checkImage(){
   //your code for checking image
}

答案 1 :(得分:0)

您是否可以访问服务器?一个更好的方法可能是使用.htaccess将所有图像请求重写为PHP脚本,然后如果找不到图像,则提供图像未找到图像