我正在创建Google Chrome扩展程序(我的第一个扩展程序),我想将扩展程序中的邮件发送到当前标签。
我正在关注文档:
https://developer.chrome.com/apps/runtime#event-onMessage
扩展程序将一个小的外部JS加载到选项卡的HTML中,其中包含以下代码:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(request)
}
);
加载JS后,我收到以下错误:
Uncaught TypeError: Cannot read property 'onMessage' of undefined
。
打开控制台并输入chrome
,我可以看到运行时不是chrome
的属性。
看起来我做错了什么,但是什么?我是否需要在manifest.json
文件中添加内容?
Chrome版本39.0.2171.71 m
谢谢。
答案 0 :(得分:7)
如果您要将JavaScript插入带有<script>
标记的网页,则会在网页的上下文中执行。
有时候it is desirable:这是访问网页级JavaScript对象的唯一方法。
但在您的情况下,这意味着代码无法访问Chrome API,因为它是相同的&#34;作为页面的代码。
您需要考虑page-level and context scripts之间或page-level and background之间的沟通(剧透,在大多数情况下需要上下文脚本代理)。
答案 1 :(得分:0)
或者它可能只是一个Heisenbug,仅在某些情况下才会出现。就我而言,关闭chrome:// extensions标签并刷新我的目标导致chrome.runtime再次可用。 Why is chrome.runtime undefined in the content script?