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

lstz6jyr  于 2022-12-08  发布在  Dojo
关注(0)|答案(1)|浏览(199)

我无法访问我的后台脚本内的事件。(我已经禁用了所有其他扩展,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从带有script标记的页面调用)

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

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

qhhrdooz

qhhrdooz1#

可能来不及回答了,但你可以用这个代替-

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

相关问题