0
我有一個相當標準的用例,其中我有一個Chrome擴展中的popup.html和background.js。我需要做兩件事情什麼時候使用消息傳遞在鉻
- 當用戶點擊,在彈出的一個按鈕,讓background.js瞭解它
- 發送一些數據從後臺彈出
我們實現這些功能我正在考慮使用鉻擴展文檔中概述的long-lived connections。爲了這一措施,這是我
# popup.js
var port = chrome.extension.connect({name: "LOGGERCHANNEL"});
function sendMessage(msg) {
port.postMessage(msg);
port.onMessage.addListener(function(msg) {
console.log("message recieved"+ msg);
});
}
sendMessage("hello world");
# background_page.js
chrome.extension.onConnect.addListener(function(port){
console.log("Connected to Popup");
console.assert(port.name == "LOGGERCHANNEL");
port.onMessage.addListener(function(msg){
console.log('Background got message:', msg);
});
});
這工作完全正常,但是,我在如何完成一個sendMessage
功能background.js
以及虧損。理想情況下,我想在某個事件發生時做sendMessage('hello from bg')
?這將如何成爲可能?
其次,如this answer所述,我可以簡單地使用chrome.extension.getViews()
和chrome.extension.getBackgroundPage()
來通過共享變量來完成此任務。
這是解決這類問題的推薦方法嗎?