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

2024-02-01

有一个特定的 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');

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

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

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

    在这种情况下,最佳方法是externally_connectable沟通 https://developer.chrome.com/extensions/messaging#external-webpage。这是一个sample https://stackoverflow.com/questions/26090563/sending-message-to-background-script/26095346#26095346.

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

    在这种情况下,一个内容脚本 https://developer.chrome.com/extensions/content_scripts可以注射(可能用"run_at": "document_start")并在文档中添加一些内容来表明扩展的存在。例如,注入页面级脚本 https://stackoverflow.com/questions/9515704/building-a-chrome-extension-inject-code-in-a-page-using-a-content-script设置一个变量。

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

    好吧,在这种情况下你就完蛋了。如果扩展程序不按照上述方式进行合作,则探测其可通过 Web 访问的资源(如果有!)是检测它的唯一方法,而不是监视 DOM 中的特定内容脚本活动(同样,如果有的话)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

探测扩展时出现 GET net::ERR_FAILED 错误 的相关文章