0

我的擴展程序在背景頁面和內容腳本中都定義了chrome.runtime.onMessage.addListener()。一些消息需要被背景頁面捕獲,其他消息需要被內容腳本捕獲。我的問題是,由於某種原因,我的一個內容腳本不能捕獲消息。Chrome擴展程序:處理多個消息偵聽器

我的背景頁面包含:

chrome.runtime.onMessage.addListener(function (msg, sender, respond) { 
    if (msg["injectCss"]) { 
     chrome.runtime.sendMessage({ beginInject: msg.injectCss.files.length }); 
     injectCss(sender.tab.id, msg.injectCss.files, 0, function() { 
      chrome.runtime.sendMessage({ endInject: true }); 
      respond(); 
     }); 
    } 
}); 

我的內容腳本包含:

chrome.runtime.onMessage.addListener(function (msg, sender, respond) { 
    if (msg["beginInject"]) { 
     //do something 
     respond(); 
    } 
}); 

chrome.runtime.sendMessage({ beginInject: msg.injectCss.files.length });會從後臺頁面調用,後臺頁面本身捕捉消息,而不是內容腳本。

問:有沒有辦法將郵件標記爲「尚未處理」,以便其他聽衆可以有機會捕捉並處理它?

回答

2

原來答案是很簡單:

爲了專門發送消息到內容腳本,使用chrome.tabs.sendMessage(tabId, message, callback)。要在其他地方發送消息,請使用chrome.runtime.sendMessage(message, callback)