我在嘗試將Chrome擴展的後臺腳本分解爲更小,更易於管理的個別腳本,這些腳本通過消息傳遞與對方通信。現在我有兩個腳本background.js
和database.js
。Chrome擴展後臺頁面之間的郵件傳遞不正確
background.js
var message = 1;
console.log("Background.js running");
console.log("Sending message " + message);
chrome.runtime.sendMessage(message, function (response) {
console.log("Response received " + response);
message+=1;
})
database.js
console.log("Database.js running");
chrome.runtime.onMessage.addListener(function (request, requester, sendResponse)
{
console.log("message received " + request);
console.log("Sending response " + request);
sendResponse(request);
return true;
});
他們在啓動時和database.js
都運行註冊表信息listener.I然後database.js
使用的sendMessage,希望能夠接收和處理它database.js
。但是,立即調用發送消息的回調,並返回一個空響應,並且database.js
中的處理程序不會觸發。
當我運行上述兩個腳本的延長,我想看到的輸出:
Database.js running
Background.js running
Sending message 1
Message received 1
Sending response 1
Response received 1
我反而得到:
Database.js running
Background.js running
Sending message 1
Response received undefined
是什麼原因導致這種行爲,是可以解決的?
也許你應該發佈這個[MCVE]。 – pvg
爲什麼消息傳遞的是相同的上下文,而不僅僅是調用函數? –