【发布时间】: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