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 :

Lancement d'une fonction non demandée au chargement du script


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 37
    Par défaut Lancement d'une fonction non demandée au chargement du script
    Bonjour,

    Désolé de vous poser la question suivante, seulement je n'arrive pas à trouver le schimilibilique ...

    J'utilise un script avec Greasemonkey sous FF v3.+.

    Quand mon script se charge, la fonction, liée au click du bouton, se lance. Pourriez-vous me dire ce que je dois faire pour éviter que cela se produise, svp ?
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    function AjouterLien(sListeLiens,sListeNoms) {  
        	var sNouveauLien;  
        	var sListeLiens;
    	var sNouveauNom;
    	var sListeNoms;
     
    	sNouveauLien=prompt('Saisissez un lien !','Ecrivez votre lien ...'); 
    	sNouveauNom="Ecrivez ici le nom associé au nouveau lien ...";
    	sNouveauNom=prompt('Saisissez un nom !',sNouveauNom);
     
        	if (sNouveauLien!=null && sNouveauNom!=null) {
     
            	if (sListeLiens!=null) {
    			sListeLiens=sListeLiens+"-"+sNouveauLien;
    		} else {
    			sListeLiens=sNouveauLien;
    		}
    	        GM_setValue("sLiens",sListeLiens);
    		if (sListeLiens!=null) {
    			sListeNoms=sListeNoms+";"+sNouveauNom;
    		} else {
    			sListeNoms=sNouveauNom;
    		}
    	        GM_setValue("sNomsLiens",sListeNoms);
    				AfficherLiens(sListeLiens,sListeNoms);
    	} else {
    			// ERREUR - A FAIRE
    	}	
    }
     
    var gsListeLiens;
    var gsListeNoms;
    var vBarreLiens;
    var tabBody;
    var eBarre;
    var eBarreAfficherLiens;
    var eIdBarreLiens;
    var elBouttonAjout;
    var elListeLiens;
     
    gsListeLiens=GM_getValue("sLiens");
    gsListeNoms=GM_getValue("sNomsLiens");
     
     
    vBarreLiens=document.createElement("div");
    vBarreLiens.setAttribute("id", "BarreLiens");
    tabBody = document.getElementsByTagName("body");
    tabBody[0].appendChild(vBarreLiens);
    eBarreAfficherLiens=document.createElement("div");
    eBarreAfficherLiens.setAttribute("id", "AfficherBarreLiens");
    eBarreAfficherLiens.innerHTML='<a style="height:100%;width:100%;"></a>';
     
    document.getElementById("BarreLiens").appendChild(eBarreAfficherLiens);
    eBarreAfficherLiens=document.getElementById("AfficherBarreLiens");
     
    vBarreLiens.addEventListener("click",showshout,false);
    vBarreLiens.setAttribute("onclick",showshout);
    vBarreLiens.addEventListener("dblclick",hideshout,false);
    vBarreLiens.setAttribute("ondblclick",hideshout);
     
    elBouttonAjout=document.createElement("input");
    elBouttonAjout.setAttribute("id","idAjouterLien");
    elBouttonAjout.setAttribute("type","button");
    elBouttonAjout.setAttribute("value","Ajout");
    elBouttonAjout.addEventListener("click",AjouterLien,false);
    elBouttonAjout.setAttribute("onclick",AjouterLien(gsListeLiens,gsListeNoms));
     
    elListeLiens=document.createElement("div");
    elListeLiens.setAttribute("id", "idListeLiens");
    document.getElementById("AfficherBarreLiens").appendChild(elListeLiens);
     
    elListeLiens.appendChild(elBouttonAjout);
    Merci de votre aide.

  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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Pour le savoir, il faudrait montrer ton appel plutôt que la fonction elle-même
    Mais bon, j'imagine que l'appel est du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    un_element.onclick = AjouterLien(sListeLiens,sListeNoms);
    ce qui a effectivement pour effet de lancer directement la fonction.
    Il faut plutôt appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    un_element.onclick = function(){AjouterLien(sListeLiens,sListeNoms)}
    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
    Inscrit en
    Février 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 37
    Par défaut
    Merci ça fonctionne

    NB : l'appel s'y trouve aussi mais il se fait après la déclaration de la fonction. Ne sachant pas à quel endroit le problème pouvait survenir j'ai mis tout ce qui était actif dans le script

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elBouttonAjout.setAttribute("onclick",AjouterLien(gsListeLiens,gsListeNoms));

    tu appels ta méthode, remplaces par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elBouttonAjout.setAttribute("onclick",function(){AjouterLien(gsListeLiens,gsListeNoms)});

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/08/2006, 16h04
  2. Réponses: 5
    Dernier message: 18/07/2006, 17h03
  3. Post avec lancement d'une fonction JS
    Par Seth77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/07/2006, 14h31
  4. Réponses: 20
    Dernier message: 21/06/2006, 20h44
  5. Réponses: 12
    Dernier message: 24/04/2006, 23h19

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