Eclaircissements sur architecture WebExtensions (background / content scripts / jquery / scripts locaux)
Bonjour à tous,
Je rencontre le problème suivant pour le développement d'une extension WebExtensions sous Firefox.
Voici un extrait des choses importantes du fichier manifest :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| "permissions": [
"tabs", "<all_urls>"
],
"web_accessible_resources": [
"interface/main_panel.html"
],
"background": {
"scripts": [
"background_scripts/background.js"
],
"persistent": true
},
"content_scripts": [
{
"js": [
"content_scripts/jquery.js", "content_scripts/highlight_elements.js"
],
"css": ["style.css"],
"run_at": "document_end"
}
] |
- via background.js je clique sur un bouton qui lance le script add_main_panel.js, qui place une iframe en bas du navigateur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // background.js
function add_main_panel() {
browser.tabs.executeScript({
file: '/interface/add_main_panel.js'
});
}
browser.browserAction.onClicked.addListener(add_main_panel);
// add_main_panel.js
var addonFrame = document.createElement ("iframe");
addonFrame.className = "iframeClass";
var w = window.innerWidth;
addonFrame.style = "overflow: auto; resize: both; position: fixed; bottom: 0; right: 0; width: 100%; height: 300px;";
addonFrame.src = browser.extension.getURL ("interface/main_panel.html");
document.body.appendChild (addonFrame); |
- comme on le voit si-dessus, cette iframe contient main_panel.html. Celui-ci contient un bouton <button id="select_element">Select an element</button> :
Code:
1 2 3 4 5 6 7
| <html>
<head></head>
<body style="background-color:white;">
<button id="select_row">Select a row</button>
<p>Selected element : </p><p id="selected_element"></p>
</body>
</html> |
Le problème est que je n'arrive pas à récupérer le click sur ce bouton via un script jquery, highlight_elements.js, qui est pourtant dans content_scripts (voir le manifest) :
Code:
1 2 3
| $("#select_row").on('click', function( event ) {
console.log("select row button clicked");
}); |
Pour résumer, je pense que je n'ai pas bien saisi les différentes articulations entre background / content scripts. Idem pour les scripts locaux, ou jquery ...
Merci de votre aide !
A bientôt.
Didier