探寻扩展名时出现GET net :: ERR_FAILED错误

sid*_*mor 5 javascript google-chrome google-chrome-extension

有特定的Chrome扩展程序,我想通过来从中获取PNG文件XMLHttpRequest。如果启用了扩展名,我想将“ load”写入控制台,如果禁用了扩展名,我想将“ error”写入控制台。

它可以正常工作,但是如果禁用扩展,Chrome会在控制台中写一个我不想出现的错误:

在此处输入图片说明

在此处输入图片说明

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

(我已经尝试过了,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');
Run Code Online (Sandbox Code Playgroud)

Xan*_*Xan 5

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

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

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

    在这种情况下,最佳方法是externally_connectable通信。这是一个示例。

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

    在这种情况下,可以注入内容脚本(可能使用"run_at": "document_start")并向文档添加一些内容,以表明扩展的存在。例如,注入设置变量的页面级脚本。

  3. 假设您不控制扩展名。

    那么,在那种情况下你就完蛋了。如果扩展程序不会以上述方式合作,则探测其 Web 可访问资源(如果有的话!)是检测它的唯一方法,而不是观察 DOM 中的特定内容脚本活动(再次,如果有的话)。