我正在使用以下代码(在 background.js 中)获取活动标签
chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs) {
console.log("active tab retrieved : " + tabs[0].id);
});
这种方法很有效,除了一种情况:当这段代码在消息传递监听器中时。例如,下一个场景:
在background.js
中chrome.runtime.onMessage.addListener(
function(message, sender, sendResponse) {
console.log("message received");
chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs) {
console.log("active tab retrieved : " + tabs[0].id);
});
}
);
* in content_script.js *
chrome.runtime.sendMessage({}, function(response) {});
我在控制台中只有以下内容
收到消息
我没有在控制台中获得第二个日志。
为什么会发生这种情况以及如何解决?
答案 0 :(得分:1)
您的代码中有一个未闭合的括号,它会引发异常并中止执行。像这样纠正:
chrome.runtime.onMessage.addListener(
function(message, sender, sendResponse) {
console.log("message received");
chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs) {
console.log("active tab retrieved : " + tabs[0].id);
}); // <-- add `);`
}
);
那就是说,如果你只是想获得发送消息的标签,那就容易多了:
sender.tab.id