Je migre mon extension du SDK vers WebExtensions et je n'arrive pas à trouver le moyen de communiquer entre un script d'arrière-plan et la barre latérale. L'idée est de transmettre le texte que l'utilisateur met en surbrillance et quelques informations supplémentaires lorsqu'il clique dans un menu contextuel. Je dois copier cette sélection dans le « texte sélectionné » entrée, mais je ne peux pas manipuler le DOM de la barre latérale du script ...: (Comment communiquer depuis un arrière-plan vers un script de barre latérale dans Firefox WebExtensions? (ou vice versa)
browser.contextMenus.create({
id: "save-highlighted-data",
title: browser.i18n.getMessage("save-data"),
contexts: ["all"],
onclick: function(info,tab){
//I got the highlighted data
console.log("Selected text: " + info.selectionText);
browser.sidebarAction.setPanel({
panel: browser.extension.getURL("/sidebar/annotation.html")
}).then(function(){
//In this context, "this" = the chrome window. But I can not change the document
// of the sidebar
//console.log("window", this.document.querySelector("#selected-text"));
});
},
command: "_execute_sidebar_action" //This toggles the sidebar
});
Toute idée que j'ai vérifié les exemples de la barre latérale à la GitHub repo, mais ils ont juste ouvrir une barre latérale avec pas plus de communication que l'action bascule de barre latérale ("_execute_sidebar_action"
)
Avez-vous essayé 'runtime.sendMessage()' et 'runtime.onMessage.addListener()'? Vous pouvez également accéder au DOM à partir de la barre latérale, mais cela implique l'utilisation de tabs.query() 'pour trouver l'onglet actif puisque les barres latérales ne sont pas attachées à un onglet particulier. – erosman
@erosman merci, voilà la réponse. Cela a fonctionné avec l'exécution. Voudriez-vous l'afficher comme réponse? PS: une dernière question> comment pouvez-vous utiliser tabs.query() si la barre latérale n'a pas de tabulation? Merci! – gal007