Chrome扩展程序:每当当前标签页URL发生更改时,便从background.js向content.js发送消息

问题描述

每当当前标签页的URL发生更改时(无论是通过重新加载还是不重新加载),我都试图从background.jscontent.js发送一条消息。

background.js 中,我为选项卡更新添加一个侦听器,为当前活动窗口进行了过滤,并发送了一条消息:

/*global chrome*/
chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab) {
    
    if (changeInfo.url) {            
        chrome.tabs.query({active: true,currentwindow: true},function(tabs) {
            chrome.tabs.sendMessage(tabs[0].id,{message: "hi"},function(response) {
                console.log(response);
            });
        }); 
          
      }
});

content.js 中,我添加了onMessage侦听器以检查此消息:

/*global chrome*/
chrome.runtime.onMessage.addListener(function(request,sender,sendResponse) {
    console.log("runtime",request);
    if (request.message === 'hi') {
        console.log('I am from content script: ',request.message);
        sendResponse("goodbye");
    }
})

但是,这似乎不起作用。当我删除chrome.tabs.onUpdated.addListener并且只有以下内容时:

chrome.tabs.query({active: true,function(tabs) {
   chrome.tabs.sendMessage(tabs[0].id,function(response) {
        console.log(response);
    });
}); 

然后它无论出于什么原因都可以工作。因此,我认为错误在于使用onUpdated侦听器。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)