chrome.tabs.sendMessage不会将tabId传递给发件人

时间:2017-01-22 16:04:52

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

我一直在尝试使用chrome扩展API,我注意到chrome.tabs.sendMessage没有将tabId作为sender传递,而是另一个id/哈希字符串与tabId不符。有谁知道这是为什么?感谢。

https://developer.chrome.com/extensions/tabs#method-sendMessage

这是我正在运行的代码:

清单

  "permissions": [
    "activeTab",
    "tabs"
  ]

event.js

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(null, {file: "content-script.js"});
  sendMessageToContent;
});

function sendMessageToContent() {
  chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello", tab: tabs[0].id}, function(response) {
        });
      });
    }

内容-的script.js

console.log('script injected');

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    console.debug('tab', request.tab);
    console.debug('sender', sender);
  });

结果:

tab 1487
sender { id: "ldolkkbojegiehpmacmglfdlndkhlace" }

1 个答案:

答案 0 :(得分:1)

请参阅chrome.runtime API docssender.tab,因此sender.tab.id仅在从普通标签发送消息时才会出现,但您从一个{{{}扩展弹出窗口发送消息{3}},而不是标签。因此sender包含您自己扩展程序的id