【问题标题】:Chrome Extension - Fix img tag onerror infinite loopChrome 扩展 - 修复 img 标签 onerror 无限循环
【发布时间】:2015-02-10 22:20:42
【问题描述】:

我想通过我正在制作的扩展程序修复网站的特定错误。

(将简单地解释网站)

该网站有一个相册,它的工作方式是每个相册有 x 个图像,每个图像都有自己的页面,例如:1.html。在每一页上都有一个图像,我假设它是动态生成的。出于某种原因,有时在专辑的最后一页上,img 标签看起来像这样:

<img id="image" src="mainsite.com/album1/images/" onerror="this.src='mainsite.com/album1/images/'">

因此这会导致 chrome 陷入无限循环,记录以下内容:

Resource interpreted as Image but transferred with MIME type text/html: "mainsite.com/album1/images/".

这会导致我的计算机以及我确信使用该网站的其他任何人都因为这个错误而严重滞后。

我希望通过扩展来解决这个问题,所以我的问题是,是否可以通过扩展来解决这个问题?如果是这样,如何?我尝试将 onerror 和 src 属性设置为空字符串,并且似乎 img 的 src 不断更新,导致错误仍然消失。

Here's 一个问题示例(警告!如果您在页面上停留的时间过长,它可能会滞后您的 chrome)

【问题讨论】:

    标签: javascript jquery html google-chrome-extension error-handling


    【解决方案1】:

    删除onerror 属性

    document.getElementById('image').removeAttribute('onerror');
    // or if you use jQuery: $('#image').removeAttr('onerror');
    

    在内容脚本中使用img.onerror = null 不起作用,因为isolation of JavaScript execution contexts:页面的onerror 属性对您的内容脚本是不可见的。

    【讨论】:

    • 啊这就是为什么它不起作用的原因,非常感谢,它现在起作用了:)
    【解决方案2】:

    作为替代方案,这里有一个无 jQuery 的解决方案:

    <img src="image.png" onerror="this.src='image.png'; this.onerror = null" />
    

    【讨论】:

    • 完全不相关。
    • @Xan,这怎么不相关?它具有与接受的答案完全相同的功能,只是它不依赖于 jQuery。 Here's a working fiddle
    • 你打算做什么,究竟是什么?该网站的代码不受 OP 的控制。他正在构建一个扩展来与之交互。
    • 哦,我明白了。 OP 不是相关网站的作者。我的错。该网站的所有者应该解决这个问题...
    • 问题归结为“扩展可以做什么来修复它”。 RobW 的回答说明了为什么它并不简单。
    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2020-05-07
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多