Je travaille sur une extension chrome qui extrait des méta-données. Le code qui analyse les métadonnées est contenu dans un script de contenu. Background.js et content.js communiquent via une requête et une réponse sendMessage. Je rencontre un problème avec la nature asynchrone de la requête sendMessage et je ne suis pas sûr de savoir comment y remédier (même après avoir lu une longue liste de discussions sur le problème). Tout conseil ou direction serait apprécié. Je soupçonne que je ne comprends pas comment les transformer en rappels.Extension Chrome: traitement de sendMessage asynchrone.
background.js:
function onContextClick(info, tab) {
if(info["selectionText"]){
var x = getMeta(tab);
//do stuff with x
}
}
function getMeta (tab) {
chrome.tabs.sendMessage(tab.id, {fetchTag: "meta,name,author,content"}, function(response) {
//alert(response.data);
//one thing I tired was to put my "do stuff" embedded here, but that didn't work either
return response.data;
});
}
var menu_id = chrome.contextMenus.create({"title": "Get Meta", "contexts":["selection"], "onclick": onContextClick});
content.js:
function fetchTag(string) {
var param = string.split(",");
return $(param[0] + "["+param[1]+ "=\"" + param[2] + "\"]").attr(param[3]);
}
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.fetchTag.length > 0)
sendResponse({data: fetchTag(request.fetchTag)});
});
double possible de [Comment retourner la réponse d'un appel asynchrone?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous- appelez) – wOxxOm