IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Javascript DOM/Extension Firefox


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 150
    Points : 412
    Points
    412
    Par défaut Javascript DOM/Extension Firefox
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Salut.
    Tu peux tout simplement créer ta fonction dans le onclick de ton élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myelt.onclick = function(){
        // Ici ta fonction mafonction.
    }
    Petit détail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myelt.setAttribute("onclick","javascript:alert('ok');");
    L'attribut onclick attendant du code JavaScript et en aucun cas une URL, utiliser la pseudo-URL javascript: est inutile et inapproprié ici...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 150
    Points : 412
    Points
    412
    Par défaut
    Merci de ta réponse

    Pour le "javascript:" tu as raison il ne sert à rien mais j'ai essayé tellement de combinaisons de syntaxes qui ne marchait pas que je l'avais laissé

    Sinon j'ai testé ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myelt.onClick=function () { alert('ok'); }
    Le bouton se créé mais si je clique ça ne fait rien.

    puis ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myelt.onclick=function () { alert('ok'); }
    Mais la carrément il doit y avoir une erreur de syntaxe car le bouton ne se créé pas du tout

    (en fait la fenêtre debug m'indique "Exception Component is not available" et je suis sous firefox 3.5.6)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 150
    Points : 412
    Points
    412
    Par défaut
    Bon à priori, la seule syntaxe qui marche c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setAttribute('onclick','<mettre tout le code ici>');
    C'est franchement pas terrible mais au moins ça fonctionne dans mon cas

Discussions similaires

  1. appeler une fonction javascript depuis une extension firefox
    Par ____22 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/08/2011, 16h46
  2. Extension Firefox Javascript : evenements bidirectionnel ?
    Par 6su7 dans le forum Autres langages pour le Web
    Réponses: 1
    Dernier message: 26/08/2011, 14h43
  3. [DOM] adapter une animation javascript au navigateur firefox
    Par nadiaflamingenierie dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 04/03/2009, 10h52
  4. [DOM] [javascript] pb IE/Firefox
    Par topolino dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/12/2005, 10h20
  5. [javascript][dom]msxml 3 et preceding
    Par trent94 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/11/2005, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo