0

在 Chrome、Firefox 和 Safari 中,我成功地使用 onError 删除了未加载的图像:

<img src="" onerror="jQuery(this).remove();" />

这在 Internet Explorer 9 中似乎不起作用,但页面的第二次+ 刷新工作正常,并且与其他浏览器完全一样。有没有更好的方法从 DOM 中删除在 IE 中未正确加载的 img 标签?似乎 IE 无限期地等待图像在第一页加载时加载?

4

2 回答 2

2

我怀疑在加载 jQuery 之前从图像中返回了错误。这将导致 onerror 处理程序触发,但随后会失败。

这根本不需要用 jQuery 来完成。你可以使用常规的 Javascript 来处理它。这样的事情应该可以解决问题:

this.parentNode.removeChild(this);

这将直接替代您当前拥有的 jQuery 代码。类似数量的代码并消除了对 jQuery 的需要,因此消除了任何可能由加载顺序引起的问题。

还值得指出的是,jQuery 存在的主要原因之一是帮助我们摆脱对像这样嵌入 HTML 中的 JS 代码的需要,所以在 HTML 事件中看到 jQuery 调用就像你原来的例子那样看起来是错误的.

如果您打算为此使用 jQuery,请不要那样做;使用 jquery 正确的事件处理机制。它看起来像这样:

jQuery('img').error(function() {
    jQuery(this).remove();
});

这将位于 HTML 之外的单独脚本标记中。

但是,由于加载顺序的问题,以及您的图像加载错误会在页面加载的早期发生,我建议只使用第一个解决方案。如果您在主页加载后动态加载图像,则 jQuery 解决方案可能更值得。

希望有帮助。

于 2012-07-31T20:41:23.853 回答
1

我认为处理此问题的最佳方法是等待您的服务器端脚本。进行文件检查,如果文件存在,则将其与其余文件一起加载,如果不存在,则不要渲染它,跳过它以供下一个或其他内容。但那是我的意见,而且总是侥幸我认为下载时会出错。我注意到你的使用

onError

我个人从未使用过它,但从我及时看到的所有示例中,它一直是

onerror

许多浏览器尝试以不区分大小写的方式查找这些属性,并尝试自行更正以按照需要的方式呈现输出。然而,IE 对于它所寻找的东西已经并且总是非常挑剔。我会说只是为了咯咯笑,试着用小写字母,看看它是否每次都没有像它应该的那样,如果是这样,那么这是你的问题,如果不像你评论中发布的人,给我们对您正在尝试做的事情有一点洞察代码,这样我们就可以尝试更好地帮助您解决哪里出了问题。

于 2012-07-29T04:07:59.570 回答