在后台脚本中,chrome.runtime未定义

时间:2017-07-26 11:05:59

标签: javascript google-chrome-extension dojo

我无法访问Background脚本中的事件。 (我已禁用所有其他扩展程序,Chrome版本:版本59.0.3071.115(官方版本)(64位)

下载扩展程序zip文件,这也没有同样的问题。 https://drive.google.com/file/d/0B2PMiyi-mpArcmlwVTl0UUFjNTA/view?usp=sharing

清单:

"background": {
    "page": "client_base/host/chrome/index.html",
    "persistent": true
  },
  "content_scripts": [
    {
      "matches": [
        "*://mail.google.com/*"
      ],
      "css": [
        "/gmail_ext/content_script.css"
      ],
      "js": [
        "/gmail_ext/loader.js"
      ],
      "run_at": "document_end"
    }
  ],

内容脚本:

var getContactsPort = chrome.runtime.connect('getContacts');
    getContactsPort.postMessage({greeting: "hello"});
    getContactsPort.onMessage.addListener(function (message, sender) {
        alert(message);
    });

后台脚本(通过Dojo从带有脚本标记的页面调用)

chrome.runtime.onConnect.addListener(function (getContactsPort) {
                getContactsPort.onMessage.addListener(function (msg) {
                    console.log(msg);
                    getContactsPort.postMessage({status: msg.greeting + ' world'});
                });
            });

DevTools将chrome.runtime显示为未定义:

DevTools showing <code>chrome.runtime</code> as undefined:

1 个答案:

答案 0 :(得分:0)

回答可能为时已晚,但您可以使用此代码 -

chrome.tabs.getSelected(null, (tab) => {
    chrome.tabs.sendMessage(tab.id, {data: 'hi'});
});