JavaScriptでコールバック関数が正しく呼ばれない
Chrome extensionでpopuup.js
からbackground.js
にsendMessage()
関数を呼び出して、更にbackground.js
にてcontent scriptからDOMの要素を取得して、その値を使ってAjaxを行ったあとに、popup.js
のコールバック関数を呼びましたが、Ajaxでデータを取ってくるところまではできますが、その後にpopup.js
のコールバック関数を呼び出しても、データが渡りません。なぜでしょうか。下記にpopup.jsと、background.jsを示します。
popup.js
$(document).ready(function(){
$('#submit').click(function(){
console.log("cliecked");
chrome.runtime.sendMessage({
command: "get_text"
},
function(response){
ここで表示されるはずだが表示されない
console.log(response);
});
});
});
background.js
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
chrome.tabs.query({active: true, windowId: chrome.windows.WINDOW_ID_CURRENT}, function(result){
chrome.tabs.sendMessage(result.shift().id, {
command: "get_dom"
},
function(msg) {
console.log("result message:", msg);
$.ajax({
type:"POST",
url:"http://localhost:3000",
data: JSON.stringify({
text: msg
}),
dataType: "json",
contentType:"application/json; charset=UTF-8",
crossDomain: true,
success: function(data){
console.log(data);
//コールバック関数呼び出し
sendResponse(data);
}
})
});
});
});