【问题标题】:GET net::ERR_FAILED error when probing for extension探测扩展时出现 GET net::ERR_FAILED 错误
【发布时间】: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');

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension


    【解决方案1】:

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

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

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

      在这种情况下,最佳方法是externally_connectable communication。这是sample

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

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

    3. 假设你不控制扩展。

      好吧,在那种情况下,你就完蛋了。如果扩展程序不以上述方式进行合作,则探测其 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 失败,这就是为什么需要这样的解决方法。
    猜你喜欢
    • 2021-03-28
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 2017-10-08
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多