Bonjour ,
J'ai un soucis avec une extension Firefox que je suis en train de bidouiller 
J'essaie simplement de rajouter du code Javascript dans le fichier .JS unique de l'extension existante.
Sans mettre une tartine de code je vais essayer d'expliquer le problème :
La fonction que j'ajoute est la suivante :
1 2 3 4 5 6 7 8 9
| function CreateButton(sId,oTd)
{
var myelt=window.content.document.createElement("input");
myelt.setAttribute('type','button');
myelt.setAttribute('name','test'+sId);
myelt.setAttribute('id','test'+sId);
myelt.setAttribute('value','Cliquer ici');
myelt.setAttribute("onclick","javascript:alert('ok');"); <---- LIGNE A
oTd.appendChild(myelt); } |
Tel quel le code fonctionne il me créé dynamiquement un ou plusieurs boutons sur la page ou je navigue avec firefox 3.5x et si je clique sur les bouton j'ai bien le message 'ok'.
Maintenant si je remplace la LIGNE A par
myelt.setAttribute("onclick","javascript:mafonction('ok');");
Avec mafonction definie dans le même .JS (celui de l'extension), dans ce cas le bouton est toujours créé mais si je clique la fonction n'est pas appellée.
En fait je me suis rendu compte que c'était un problème de contexte ou de namespace.
En gros "mafonction" existe si je l'appelle directement dans l'extension firefox, mais elle n'existe plus quand l'utilisateur clique sur le bouton puisque la on se retrouve dans le contexte de la page web (et plus dans le contexte de l'extension firefox).
Pour les fonctions javascript standard (alert,eval ...) ça fonctionne peut importe que l'on soit dans la page ou dans l'extension.
Donc ma question est : comment appeller "mafonction" depuis le contexte de la page web ?
Partager