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

Bibliothèques & Frameworks Discussion :

[DOM] Surveiller une modification du DOM (lib prototype)


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Par défaut [DOM] Surveiller une modification du DOM (lib prototype)
    Bonjour, je me base sur prototype pour simplifer mon code

    Je m'interoge sur la manière de gérer un evenement sur un bt (id='monBt' par exemple) une fois celui créé et inseré dans le DOM via une action quelconque.

    Modèle :

    1 - Au chargement de la page mon bt n'existe pas

    2 - Un fois la page chargée je pose un gestionnaire d'evenement en javascript qui va surveiller si mon bt existe, si il existe on fait quelque chose au click par exemple.

    3 - J'insere le bt dans le DOM via une action quelconque.

    Problème :

    Evidement mon gestionnaire ne reconnait pas le bt puisque au chargement de la page celui n'existait pas dans le DOM.

    Aussi ma question, existe t-il une manière abstraite genre si DOM = modifié, on rappel le gestionnaire d'evenements?

    Merci de vos avis

  2. #2
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Salut,

    Non, pas à ma connaissance. A l'insertion du bouton dans le DOM il faudrait lui attacher l'évènement.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Par défaut
    Merci,

    c'est ce que je fais mais une manière plus abstraite serait top.

    Cela alleger nettement les manips

    Edit : je pense notement a des outils comme firebug qui rafraichis la presentation html en live lors de la suppression d'un element(je ne parle pas de la suppresssion mais de ça representation dans la fenetre firebug).

  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
    Salut
    as tu essayer de mettre ton bout de script vérifiant ton bouton ( ou l'appel de la méthode vérifiant les actions dessus, tout en bas de ta page ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script ...> ...</script>
    Bon courage ^^

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Par défaut
    Justement, c ce que je cherche à eviter.

    Je vais prendre un exemple concret pour etre clair, c'est un exemple simple, car le rafraichissement du DOM ce ferait plus en AJAX et je voudrais savoir si on peux éviter de devaoir rajouter un gestionnaire d'evenement à chaque fois

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
    <title>Example</title>
     
    <script type="text/javascript" src="prototype.js"></script>	 
    <script type="text/javascript">
     
    	Event.observe(window, 'load', gestionClick);
     
    	function gestionClick() {
    		// On ajoute au click un li dans le menu
    		Event.observe('ajout', 'click', function(e) {
    			$('menu').insert('<li>Ajouter</li>');
    		});
     
    		// On liste les li et on y appose une action au click
    		$A(document.getElementsByTagName('li')).each(function (el) {
    			Event.observe(el, 'click', function(e) {
    				alert(el.innerHTML);
    			});
    		});
    	}	
     
    	/* Et si il était possible de faire ça (exemple) : 
     
    	Event.observe(window, 'DOM-CHANGED', gestionClick);
     
    	*/
     
    </script>	
     
    </head>
     
    <body>
     
    <a href="#" id="ajout">Ajouter bouton "Ajouter"</a>
     
    <ul id="menu">
    	<li>Voir</li>
      <li>Modifier</li>
      <li>Supprimer</li>
    </ul>
     
    </body>
    </html>
    Fichiers attachés Fichiers attachés

  6. #6
    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
    Ok je viens de comprendre le principe ...
    tu cherches à raffraichir les objet surveiller par le listener ...
    ne connaissant pas prototype , peux tu essayer d'ajouter la méthode click sur ton nouveau li ? ( je sais ce n'est pas ce que tu cherches )
    sinon solution beaucoup plus propre :

    - plutot que de mettre le listener sur les li, met le sur le ul puis vérifis si l'élément sur lequel l'utilisateur a cliqué est un li

    Ne connaissant pas cette librairie je ne peux te donner que l'algo ou un bout de code plus complet mais perso ...

    Bon courage

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Par défaut
    Merci pour la réponse mais le problème reste entier. Car à partir du moment ou l'élément(le li ajouter en l'occurence) n'est pas construit au load de la page, il ne sera jamais reconnu par le gestionnaire d'évenements qui lui est créé une fois la page completement chargé ( logique).

    Donc à l'instar d'un load(ou onLoad pour les anciens :p) peut etre existe t'il un onChanged ou une manière de faire similaire.

    Merci pour la réponse en tout cas

  8. #8
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    J'ai trouvé quelque chose, mais ce n'est pas forcément plaisant. Il existe bien les types d'évènement de mutation mais apparemment ce n'est pas supporté par IE. Et je n'ai pas trouvé ce genre de chose dans la doc de prototype.

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

Discussions similaires

  1. Détecter les modifications du DOM dans une div
    Par Invité dans le forum jQuery
    Réponses: 3
    Dernier message: 01/12/2011, 17h14
  2. Réponses: 4
    Dernier message: 14/09/2009, 10h19
  3. [DOM] Ajouter une image avec Dom
    Par Pacen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/06/2008, 21h52
  4. [DOM] Modification du DOM d'une popup
    Par Mike_69 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/03/2007, 13h28
  5. Sauvegarder le DOM d'une page
    Par partyboy dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 11/05/2006, 13h30

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