OnActivated仅在打开新选项卡时有效

时间:2016-08-01 04:58:24

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

我尝试与刚刚使用消息传递切换到的选项卡的内容脚本进行通信。这是我在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();
});

即使内容脚本切换回该标签,内容脚本是否也不再在非活动标签中收听?为什么这只在新打开的选项卡中运行?

为了进一步阐明我为什么要这样做,有时候选项卡会保持打开而不重新加载,我的脚本已经被执行了。当使用弹出选项更改与脚本相关的信息时,我希望内容在选项卡更改时重新加载,并且在不重新加载页面的情况下再次运行特定功能。因此,注入内容脚本不太理想,因为它已经被执行了。

1 个答案:

答案 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);
               });
            });

        });