2

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

.load() 和 .error() 方法始终有效,但在 IE 中除外。我一直在寻找,我发现了这个:

IE 在页面刷新时未调用 JQuery .load() 函数的问题 - 可追溯到图像缓存

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

关于如何使这种方法工作的任何想法,每次 IE 的图像都无需从服务器加载,或者以其他方式检查图像是否已正确加载或不能在 IE 中工作?

提前致谢

4

2 回答 2

1

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

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

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

$('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
}
于 2013-05-28T17:47:14.477 回答
0

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

于 2013-05-28T17:16:07.360 回答