我一直在尝试使用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" }
答案 0 :(得分:1)
请参阅chrome.runtime API docs:sender.tab
,因此sender.tab.id
仅在从普通标签发送消息时才会出现,但您从一个{{{}扩展弹出窗口发送消息{3}},而不是标签。因此sender
包含您自己扩展程序的id
。