探测扩展时出现 GET net::ERR_FAILED 错误
Posted
技术标签:
【中文标题】探测扩展时出现 GET net::ERR_FAILED 错误【英文标题】:GET net::ERR_FAILED error when probing for extension 【发布时间】:2016-09-27 14:42:03 【问题描述】:有一个特定的 Chrome 扩展程序,我想通过XMLHttpRequest
从中获取一个 PNG 文件。如果扩展启用,我想向控制台写入“加载”,如果扩展被禁用,我想向控制台写入“错误”。
它工作正常,但如果扩展程序被禁用,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');
【问题讨论】:
【参考方案1】:基本上,您无法消除这些错误,因为它们不是 JS 错误而是网络错误。
假设您的目标是检测是否存在特定扩展:
假设您在特定域和由您控制的特定扩展需要它。
在这种情况下,最佳方法是externally_connectable
communication。这是sample。
假设您在事先不知道的非特定域中需要它,但您可以控制扩展。
在这种情况下,可以注入一个Content Script(可能是"run_at": "document_start"
)并在文档中添加一些东西,表明存在扩展。例如,injecting a page-level script 设置了一个变量。
假设你不控制扩展。
好吧,在那种情况下,你就完蛋了。如果扩展程序不以上述方式进行合作,则探测其 Web 可访问资源(如果有的话!)是检测它的唯一方法,而不是监视 DOM 中的特定内容脚本活动(再次,如果有的话)。
【讨论】:
你说得对,我想识别不是我的扩展名,我需要控制台来清除错误,你知道其他方法吗?谢谢... “你完蛋了”哪一部分不清楚?但是,如果您可以检测到内容脚本对 DOM 所做的一些更改,那可能是另一种选择。这很大程度上取决于扩展程序的作用。【参考方案2】:实际上,error when chrome cast extension is not installed 上已经存在使用 google-cast-sdk 的问题,并且基于该问题跟踪器,这还没有完全解决。但是,comments 之一提供了解决方法:
解决方法是安装 Google Cast 扩展程序或禁用网络警告(请注意,您可能会错过一些您可能感兴趣的警告),这样您就不会看到这些额外的日志。
而且,您还可以尝试使用此 SO 帖子中给出的可能解决方案 - Google chrome cast sender error if chrome cast extension is not installed or using incognito,谁知道呢,它可能会有所帮助。 :)
【讨论】:
请注意:Cast SDK 通过从 Chrome 中的控制台报告中过滤掉某些字符串来“解决”这个问题。一般来说,没有办法让 JS 代码中的 tentative-request-to-extension 失败,这就是为什么需要这样的解决方法。以上是关于探测扩展时出现 GET net::ERR_FAILED 错误的主要内容,如果未能解决你的问题,请参考以下文章
从 BigQuery 查询到 Jupyter 时出现“'NotebookFormatter' 对象没有属性 'get_result'”错误?