Chrome: passer des données entre ContentScript et Popup.html
-
14-11-2019 - |
Question
J'ai une fonction simple qui passe juste location.href
de Contentscript à la page popup.html. Ça ne fonctionne pas. Ce que j'ai, c'est ..
dans popup.html ..
chrome.tabs.getSelected(null,function(tab)
{
chrome.tabs.sendRequest({req: "getlocation"}, function(response){
return response.reply;
});
});
Dans mon contenu script ...
case "getlocation":
sendResponse({
reply: location.href
});
break;
Pourquoi mon code ne fonctionne-t-il pas?
La solution
Certains paramètres sont manquants, et vous ne pouvez pas utiliser return
à partir d'une fonction de rappel asynchrone.
popup.html:
function getCurrentUrl(callback){
chrome.tabs.getSelected(null,function(tab){
chrome.tabs.sendRequest(tab.id, {req: "getlocation"}, function(response){
callback(response.reply);
});
});
}
getCurrentUrl(function(url){
console.log("url:", url);
});
content_script.js:
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
switch(request.req) {
case "getlocation":
sendResponse({
reply: window.location.href
});
break;
}
});
Autres conseils
SendRequest est obsolète.
utilisation envoyer le message
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow