【问题标题】:Chrome extension background script "Cannot access contens of URL devtools..." error?Chrome 扩展后台脚本“无法访问 URL devtools 的内容...”错误?
【发布时间】:2021-07-06 16:57:20
【问题描述】:

我有一个名为 events.js 的后台脚本 我偶尔会收到此错误

未检查的 runtime.lastError:无法访问 url 的内容 “devtools://devtools/bundled/devtools_app.html?remoteBase=https://chrome-devtools-frontend.appspot.com/serve_file/@ed9d447d30203dc5069e540f05079e493fc1c132/&dockSide=undocked”。 扩展清单必须请求访问此主机的权限。

它显然不是由 events.js 生成,而是由“_generated_background_page.html”生成,但出现在我的后台控制台日志中。

我怀疑这是由我在 events.js 中调用引起的:

chrome.webNavigation.onHistoryStateUpdated.addListener(function(e) {
   // do stuff
}

这让我发疯了。谁能告诉我这是怎么回事?

【问题讨论】:

  • devtools 窗口与任何其他浏览器窗口一样,因此它可能会在您的 webNavigation 或其他一些侦听器中报告。但是你不能从你的扩展访问 devtools 窗口的内容。侦听器内部的某些东西试图访问它并被阻止。您需要做的就是在您的侦听器中输入类似if (chrome.runtime.lastError) return 的内容。
  • 谢谢,我已经插入了那行代码,看看它是否有助于解决错误。但我也意识到我的听众正在从其他选项卡中的其他不相关网站(例如 youtube)中获取推送状态更改。这没有任何意义。我怎样才能让我的扩展只关注来自我的标签或特定 URL(通过 url 匹配或类似的东西?)的推送状态更改?
  • 您可以使用 url 过滤,请参阅文档,例如 chrome.webNavigation.onHistoryStateUpdated.addListener(fn, {url: [{hostEquals: 'www.google.com'}]}) 但作为对于选项卡范围,您必须在侦听器内执行检查,无法指定 tabId 过滤器。
  • 嗨@wOxxOm 我想将您的“评论”标记为答案,因为我相信我的问题已得到解决,但不知道如何解决?
  • 您可以在自己的答案中使用真实代码的相关摘录来总结它。

标签: google-chrome-extension google-chrome-devtools


【解决方案1】:

我今天也遇到了类似的问题。那些面对面的时刻之一。我发现因为我的后台脚本中有一个断点,以便在句柄消息中执行内容脚本之前检查某些内容,这个后台 devtools 选项卡成为活动选项卡并且厌倦了注入脚本而不是我激活的预期选项卡我的扩展。

因此错误。

无法访问 url 的内容 “devtools://devtools/bundled/devtools_app.html?remoteBase=https://chrome-devtools-frontend.appspot.com/serve_file/@7345a6d1bfcaff81162a957e9b7d52649fe2ac38/&dockSide=undocked”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2016-11-19
    • 1970-01-01
    • 2012-07-04
    相关资源
    最近更新 更多