我的背景聽者Chrome擴展程序:如何將消息從背景發送到背景?
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse)
在chrome.contextMenus.onClicked
聽衆,我想使用的消息系統,我稱之爲
chrome.runtime.sendMessage
在監聽器,但它不是作品。
那麼,我怎樣才能從背景sendMessage到背景?
我的背景聽者Chrome擴展程序:如何將消息從背景發送到背景?
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse)
在chrome.contextMenus.onClicked
聽衆,我想使用的消息系統,我稱之爲
chrome.runtime.sendMessage
在監聽器,但它不是作品。
那麼,我怎樣才能從背景sendMessage到背景?
消息不被同一頁面接收。
如果您希望能夠重新使用onMessage
偵聽器,請將其放入單獨的函數中。例如:
function alwaysDoSomething() {
console.log('Done something!');
}
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
alwaysDoSomething();
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
alwaysDoSomething();
});
有一種可用於手動觸發事件的未記錄方法。 這是無證的,所以使用它需要您自擔風險!
chrome.contextMenus.onClicked.addListener(function(info, tab) {
var message = 'whatever';
var sender = {tab: null, id: chrome.runtime.id};
var sendResponse = function() {};
chrome.runtime.onMessage.dispatch(message, sender, sendResponse);
});
我認爲你應該使用一個頁面派出chrome.extension.onRequestExternal
或chrome.extension.onConnectExternal
我必須確保聽衆能夠從contentScript和彈出,現在contentScript聽消息,並彈出窗口工作正常,但在後臺它不能正常工作。 – wener
謝謝,也許這是我可以實現目標的唯一方式。實際上,對於每條消息我都有一個函數來完成這個工作,函數需要與偵聽器相同的參數。如果我直接調用函數,它會使我的結構變得複雜。 – wener
@wener最簡潔的方法是在我的答案上發佈,不需要對代碼進行任何更改的方法將發佈在最後。 –
謝謝,它看起來很奇怪,但我沒有其他選擇。也許這是擴展系統中的錯過。 – wener