从background.js到带有响应的content.js的chrome扩展消息,TypeError无法读取属性

时间:2018-04-10 19:38:06

标签: javascript google-chrome google-chrome-extension

您好我是Chrome扩展程序的新手,我正在尝试进行扩展。我希望每次用户转到另一个选项卡时,background.js都会向content.js发送请求,并且我在background.js中有这个代码

chrome.tabs.onActivated.addListener(function() {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      chrome.tabs.sendMessage(tabs[0].id, {greeting: "update"}, function(response) {
          console.log(response.proto);
      });
    });
});

并在content.js中我有这个代码来接收请求并发送响应:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        console.log(request.greeting);
        var protocol = window.location.protocol;
        sendResponse({ proto: protocol });
    }
);

我在后台控制台中收到此错误:

Error in event handler for (unknown): TypeError: Cannot read property 'proto' of undefined
    at background.js:6:32

我在普通控制台中没有错误。我使用过这个文档:

https://developer.chrome.com/apps/messaging

https://developer.chrome.com/extensions/tabs#event-onActivated

我做错了什么?

1 个答案:

答案 0 :(得分:0)

content.js仅在url文件中定义manifest.json的标签中运行。如果活动标签的url与这些网址不匹配,则background.js将无效。