ユーザーが popup.html に入力したレートを popup.js 経由で event.js に送信しようとしていますが、なぜ機能しないのかわかりません event.js にアラートを追加して、レートが popup.js から来ているかどうかを確認し、アラートは正しく機能していますが、それでも目的の作業を行うことができません
event.js
var item={
"id":"selected text",
"title":"Speak",
"contexts":["selection"]
};
var rate; chrome.runtime.onMessage.addListener(function(request,sender,sendResponse){
if(request.todo=="changerate")
{
rate=request.rate;
}
});
chrome.contextMenus.create(item);
chrome.contextMenus.onClicked.addListener(function(clickData){
alert(rate);
if(clickData.menuItemId=='selected text' &&
clickData.selectionText){
chrome.tts.speak(clickData.selectionText,{'lang':'en-
US','rate':parseInt(rate)});
}
})
/////////////////////////////////////////
popup.js
$('#submit').click(function(){
var rate=$('#rate').val();
chrome.runtime.sendMessage({todo:"changerate",rate:rate});
});
ユーザーに応じて音声の速度を変更しようとしていますが、 Unchecked runtime.lastError: The message port closed before a response was received のようなエラーを表示して動作していません。