当我在devtool上调试javaScript时。
chrome.runtime
请参阅“ http://www.qq.com”,其中显示: chrome.runtime未定义。参见http preview。
但是当我在https站点(https://www.qq.com)上调试它时,它工作正常。参见https preview。
提示:所有脚本都在顶部框架上运行。
我可以更改“ chorme:flags”以启用它吗?
答案 0 :(得分:1)
我现在知道为什么了。
未安装扩展程序时,不存在“ chrome.runtime.sendMessage”。-自chrome 66+起。 参见:https://bugs.chromium.org/p/chromium/issues/detail?id=835287
rdevlin .... @ chromium.org于4月25日发表的第29条评论 这些情况来自伪造的错误,我认为这是由于修订引起的 39f8939309fe39bccc17fa1280b6c7f25c411947。这修改了 cryptotoken组件扩展的externally_connectable属性 (自动内置于Chrome中)仅接受传入的连接 来自https URL,而以前是所有URL。何时设定 对于所有网址,chrome.runtime.sendMessage将始终可用 因为任何URL都可能会向加密令牌发送消息 组件扩展。
但是,这按预期工作。仅加密令牌扩展 接受来自https来源的连接(因此其他任何 忽略),并且向其他任何扩展名发送消息都需要 接收扩展以在externally_connectable中列出URL 选项。此外,这意味着之前任何扩展都依赖 这种行为很可能无法发送消息,但是 异步完成(一旦消息未能找到合适的 接收器),而不是同步(因为未定义运行时)。如果 该扩展名在externally_connectable中列出该URL,然后 chrome.runtime应该仍然存在。如果扩展名没有 在external_connectable中列出网站,然后chrome.runtime 可用是预期的行为。
是否存在未定义chrome.runtime的情况 非沙盒式chrome-extension://页面,或用于其中 已安装的扩展程序在 清单的externally_connectable字段?如果是这样,请附上 扩展程序演示了此问题。如果没有,听起来像是 WAI。
修复:使用清单清单添加一个引文。
"externally_connectable": {
"ids": [
"*"
],
"matches": [
"http://test.yoursite.in:9090/*",
"*://*.chromium.org/*"
]
},
全部考虑。