我希望能夠從內容腳本(任何標籤)到背景溝通。Chrome擴展onMessage.addListener在background.js不會被調用
根據文件,我應該使用
chrome.extension
chrome.runtime.onMessage
與chrome.runtime.sendMessage
。
所以這就是我所做的:
的manifest.json
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": [
"*://*/*"
],
background.js
console.info('1');
chrome.runtime.onMessage.addListener((request, sender, sendReponse) => {
console.info('2');
sendReponse({ msg: 'foo' });
return true;
});
我不是很肯定return true;
is needed。我嘗試了和沒有。
建設和重裝擴展後,我通過chrome://extensions
> 1 // background.js file was run
> chrome.runtime.sendMessage({ hello: 'so' }, v => console.info(v))
> undefined
> undefined // This is the callback response I get. Why?
更重要的訪問鍍鉻背景頁,我也從其他選項卡(即stackoverflow.com)
> chrome.runtime.sendMessage('extension id', { hello: 'so' }, v => console.info(v))
> undefined
> undefined
運行時的sendMessage得到一個空的響應回調 爲什麼我會得到一個空響應回調?
我是否缺少特別許可?錯誤的參數?也許錯誤的API函數這樣做?
至於'返回TRUE',它僅在需要時響應從一個[異步執行的代碼]傳送(https://stackoverflow.com/a/14220323)。 – wOxxOm