我尝试与刚刚使用消息传递切换到的选项卡的内容脚本进行通信。这是我在background.js脚本中的代码。
chrome.tabs.onActivated.addListener(function(activeInfo) {
chrome.tabs.sendMessage(activeInfo.tabId, { greeting: "hello" }, function(response) {
console.log(response.farewell);
});
});
这是我的内容脚本中的代码:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
sendResponse({ farewell: "goodbye" });
loadContent();
});
即使内容脚本切换回该标签,内容脚本是否也不再在非活动标签中收听?为什么这只在新打开的选项卡中运行?
为了进一步阐明我为什么要这样做,有时候选项卡会保持打开而不重新加载,我的脚本已经被执行了。当使用弹出选项更改与脚本相关的信息时,我希望内容在选项卡更改时重新加载,并且在不重新加载页面的情况下再次运行特定功能。因此,注入内容脚本不太理想,因为它已经被执行了。
答案 0 :(得分:0)
试试这个:
<强> background.js 强>
chrome.tabs.onActivated.addListener(function(activeInfo) {
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
chrome.tabs.sendMessage(activeInfo.tabId,
{ greeting: "hello" }, function(response) {
console.log(response.farewell);
});
});
});