在Chrome,Firefox和Safari中,我成功使用onError删除未加载的图片:
<img src="" onerror="jQuery(this).remove();" />
这似乎在Internet Explorer 9中不起作用,但页面的第二次+刷新工作正常,与其他浏览器完全一样。有没有更好的方法从dom中删除未在IE中正确加载的img标签?看起来IE似乎无限期地等待第一页加载时加载图像?
答案 0 :(得分: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解决方案可能更有价值。
希望有所帮助。
答案 1 :(得分:1)
在我看来,处理此问题的最佳方法是在服务器端脚本上待决。进行文件检查,如果文件存在,则将其与其余文件一起加载,如果没有,则不要渲染它以跳过下一个或其他东西。但这就是我的观点,并且总是侥幸在我下载的时候会出现问题。我注意到你的使用
onError
我个人从来没有使用过这个,但是从我见过的所有例子来看,它始终是
onerror
许多浏览器尝试以不区分大小写的方式查找这些属性,并尝试自行更正它以按需要的方式呈现输出。然而,对于它所寻找的东西,IE已经并且总是非常挑剔。我只是为了咯咯笑,试着小写,看看它是不是每次都像它应该的那样,如果它确实那么这就是你的问题,如果不是像你的评论中发布的那样,给我们我们可以尝试更好地帮助您处理出错的地方。