javascript - 探测扩展时出现 GET net::ERR_FAILED 错误

标签 javascript google-chrome google-chrome-extension

有一个特定的 Chrome 扩展程序,我想通过 XMLHttpRequest 从中获取一个 PNG 文件。如果启用了扩展,我想将“加载”写入控制台,如果禁用了扩展,我想将“错误”写入控制台。

它工作正常,但如果扩展程序被禁用,Chrome 会在控制台中写入一条我不希望出现的错误:

enter image description here

enter image description here

如何从控制台中删除此错误?

(我试过 window.onerror 但它不起作用)

代码:

var loadHref = function(href) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onload = function(){console.log('load')};
    xmlhttp.onerror = function() {console.log('error');};
    xmlhttp.open('GET', href);
    xmlhttp.send();
}
loadHref('chrome-extension://77672b238520494cba8855547dd00ba8/img/icon24.png');

最佳答案

基本上,您无法消除这些错误,因为它们不是 JS 错误而是网络错误。

假设您的目标是检测是否存在特定扩展:

  1. 假设您在特定域和由您控制的特定扩展中需要它。

    在这种情况下,最佳方法是 externally_connectable communication .这是一个 sample .

  2. 假设您在事先不知道的非特定域中需要它,但您可以控制扩展名。

    在这种情况下,一个 Content Script可以注入(inject)(可能使用 "run_at": "document_start")并在文档中添加一些东西来表示扩展的存在。例如,injecting a page-level script设置一个变量。

  3. 假设您不控制扩展程序。

    好吧,那样的话你就完蛋了。如果一个扩展不会以上述方式合作,探测它的网络可访问资源(如果有的话!)是检测它的唯一方法,而不是监视 DOM 中的特定内容脚本事件(同样,如果有的话)。

关于javascript - 探测扩展时出现 GET net::ERR_FAILED 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37514297/

相关文章:

javascript - 从 react 中的输入字段获取值

javascript - D3 js 从数据属性设置数据

javascript - tabs.executeScript : Cannot access a chrome://URL

javascript - 如何将文本链接转换为 Google API 删除的真实链接?

google-chrome - 安装特定版本的 google-chrome-unstable

javascript - 通过 chrome 后台扩展或后台应用程序访问用户麦克风

javascript - crossrider 扩展安装在所有浏览器上,但仅在 Chrome 中工作

javascript - Chrome 扩展 : event listeners

javascript - 在 safari 中调整滚动标题的大小效果很好,但在 chrome 和 firefox 上会变得不稳定

javascript - Gmail Chrome 扩展和 document.readyState