Webmaster Hub: IE n'exécute plus onclick suite à une manipulation DOM via jquery - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

IE n'exécute plus onclick suite à une manipulation DOM via jquery

#1 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 20 avril 2011 - 14:46

Bonjour,
je met à jour certains contenu de mon site via des requêtes ajax (jquery).
Je me rend compte que sous IE les onclick ou onmouseover ne fonctionne plus une fois le contenu mis à jour.
Le problème se pose qu'avec IE.
J'ai cherché et trouvé 2-3 sujets similaires mais pas de réponse :
http://forum.alsacre...-5-50741-1.html
http://stackoverflow...d-dom-a-element

Quelqu'un aurait il une idée pour résoudre se problème ?
Merci d'avance
Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#2 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 20 avril 2011 - 15:01

Aurais-tu un lien, qu'on puisse tester ?
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#3 L'utilisateur est hors-ligne   tayoze 

  • Groupe : Actif
  • Messages : 17
  • Inscrit(e) : 29-octobre 07
  • Genre:Homme
  • Localisation:Saint Denis

Posté 20 avril 2011 - 15:40

Peut-tu nous donner la méthode que tu utilise pour ton onclick ?

exemple : <input onclick="xxxxx" > ou $(xxxxx').click(
0

#4 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 21 avril 2011 - 10:58

Salut,

Si j'ai bien compris, tu utilises la méthode click de jQuery. Or, celle-ci ne fonctionne que sur ce qui est déjà défini au moment de l'appel.
Si tu veux tenir compte de modifications éventuelles, jette un œil aux fonctions live et delegate.
Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
0

#5 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 21 avril 2011 - 11:04

Bonjour,
donc voilà un exemple de code.
Avec IE au bout d'un certain temps les onclick et onmouseover ne marche plus.
Je dis bien au bout d'un certain temps, au début, les 5 6 premières itération de la boucle pas de souci.

<script language="JavaScript" type="text/javascript">  
  function maj_contenu2() {
   // tchat verical
		 $.ajax({
			type: "GET",
			url: "test3.html",
				success:function(data){ 
				var message_ajax = $(".tchat_content");
				message_ajax.empty();
				message_ajax.append(data);
				}
		 });
	 }
  
  var boucle_generale = setInterval(maj_contenu2,3500);
</script>
--------------------------------------
<div id="contenu" class="tchat_content">
</div>



Et le contenu affiché par test3.html
<a href="http://www.weplayflash.fr" onclick="popUp(this.href,'elastic',500,600);return false;" onmouseover="javascript:$('.information_deux').jHelperTip({ trigger: 'hover', source: 'attribute', attrName: 'alt', oacity: 0.9,  autoClose:true,  })" class="information_deux" alt="Cliquez pour signaler un problème avec ce score.">Test lien 2</a><br /><br />



Voilà, ce qui est bizarre c'est que plus il y a de contenu dans test3.html plus ça bug rapidement.
Voici 2 pages si vous voulez tester
http://www.weplayflash.fr/test.html
http://www.weplayflash.fr/testa.html

Merci d'avance

Ce message a été modifié par sparh - 21 avril 2011 - 11:05.

Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#6 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 21 avril 2011 - 11:07

C'est pas super propre, comme code.
Dans l'idéal, il faudrait utiliser la fonction live(), comme te l'a dit Marvin, pour exécuter le code jQuery sur chacun des éléments chargés via AJAX (Et en prime, tu séparerais le code de l'interactivité).
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#7 L'utilisateur est hors-ligne   tayoze 

  • Groupe : Actif
  • Messages : 17
  • Inscrit(e) : 29-octobre 07
  • Genre:Homme
  • Localisation:Saint Denis

Posté 21 avril 2011 - 11:15

Exemple :

Html
<input type="button" id="nom" name="nom"  value="mon nom">

 


Ajax
	$('#nom').live('click',function() {
		alert('ca marche');
	}); 



Comme cela l'action sera toujours disponible pour ton objet avec l'id "nom"

Ce message a été modifié par tayoze - 21 avril 2011 - 11:16.

0

#8 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 21 avril 2011 - 11:19

Alors, Moi je te conseillerais d'abord de tester avec un code plus propre, genre :
<a href="http://www.weplayflash.fr" class="information_deux" title="Cliquez pour signaler un problème avec ce score.">Test lien 2</a><br /><br />

(title car un lien n'a pas de alt)
et pour le js
$(function()
{
  $(".tchat_content").delegate(".information_deux", "click", function (e) {e.preventDefault(); popUp(this.href,'elastic',500,600);});
  $(".tchat_content").delegate(".information_deux", "hover", function () {$(this).jHelperTip({ trigger: 'hover', source: 'attribute', attrName: 'title', oacity: 0.9,  autoClose:true}});
});


N.B. : Code non testé
Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
0

#9 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 21 avril 2011 - 15:35

Merci pour vos réponses,
voilà ce que j'ai fait :
 $(function(){ 
   $('.information_trois').live('click',function() { popUp($(this).attr('href'),'elastic',500,600); return false; });
   $('.information_trois').live('hover',function() { $(this).jHelperTip({ trigger: 'hover', source: 'attribute', attrName: 'alt', oacity: 0.9,  autoClose:true}); }); 
  }); 
------------------------------------------
<a href="http://www.weplayflash.fr/coucou"  class="information_trois" alt="Cliquez pour signaler un problème avec ce score.">Test lien 2</a>



Et ça marche ;) donc merci à tous

Par contre j'ai cherché la différence entre live() et delegate mais je n'ai pas bien compris ?
Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#10 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 24 avril 2011 - 13:53

Pas très simple comme réponse. C'est liée au "bubbling" (la remontée de l'évènement de l'élément le recevant jusqu'au nœud document). Alors (qu'on m'arrête si je dis des bêtises) :
  • la méthode live n'est pas "chainable" (tu ne peux pas lui coller d'autres méthodes derrière séparées par des points)
  • la méthode live délègue la gestion des évènements indiqués au niveau du document (donc les évènements font nue remontée complète jusqu'au nœud DOM tout en haut de l'arbre)
  • La méthode delegate te permet de spécifier le gestionnaire d'évènements, et l'évènement en question n'ira pas plus loin (donc c'est plus rapide, et ça évite les interactions éventuelles sur le chemin de remontée de l'évènement jusqu'au nœud document)
  • Il me semble qu'avec delegate, il faut que l’élément dont tu te sers comme gestionnaire supporte par nature l'évènement qu'il reçoit pour pouvoir le gérer


Tricky, isn't it ? :)

Ce message a été modifié par MarvinLeRouge - 24 avril 2011 - 13:53.

Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
0

#11 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 26 avril 2011 - 08:39

Ouahou,
merci pour cette réponse complète.
Je vais donc faire des tests voir si je peux utiliser delegate et voir si ça accélère un peu.
Encore merci à tous
Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)