首页 > 解决方案 > 无法在 iframe 中访问 c​​hrome.runtime

问题描述

试图访问chrome.runtime.sendMessageiframe但它表明

chrome.runtimeundefined

chrome.runtime.sendMessage("kbfjlfcddgkokfgifbohnjfpcnkknpbf", { getVersion: true },
    function (response) {
       console.log(response);
    }
);

标签: javascriptgoogle-chrome-extension

解决方案


基于此线程,如果您将 JavaScript 插入带有<script>标签的页面,它将在页面的上下文中执行。

有时它是可取的:这是访问页面级 JavaScript 对象的唯一方法。

但在您的情况下,这意味着代码无法访问 Chrome API,因为它与页面代码“相同”。

您需要研究页面级和上下文脚本之间的通信,或者页面级和背景之间的通信(剧透,在大多数情况下无论如何都需要上下文脚本代理)。

同样从这个页面,通过添加断点或调试器语句,它会导致该值未定义。尝试刷新页面,然后在页面加载后打开并查看是否chrome.runtime正常工作。


推荐阅读