2011-08-02 2 views
2

J'utilise asp.net pour ajouter ajouter un côté client de l'événement onclick à une balise span dans un ListView:événement onclick ne fonctionne pas dans Internet Explorer

<span id="mySpan" onclick="<%# Request.Cookies["myCookie"] != null ? "MyFunction1(" + Eval("MyVal1") + ");" : "MyFunction2(" + Eval("MyVal2") + ");" %>" 

Chaque aspect de ce que je fais travaille toujours parfaitement dans Chrome et FF 100% du temps. Dans IE (v8 et v9), il ajoute toujours la bonne fonction javascript et tout le code semble parfait - le code de span rendu dans IE semble identique à ce qu'il ressemble dans Chrome et FF. Cependant, lors de la surveillance du trafic avec Fiddler, plusieurs intervalles d'IE aléatoires ne déclenchent pas du tout la fonction javascript. Certains le font. Il n'y a pas de différence dans le code entre ceux qui fonctionnent et ceux qui ne fonctionnent pas. Ceux qui ne fonctionnent pas dans IE fonctionnent bien dans Chrome et FF. Je suis également en mesure de confirmer que la fonction javascript n'est pas déclenchée en utilisant des moyens autres que Fiddler, donc Fiddler ne me donne pas de fausses lectures.

Y at-il quelque chose que je fais dans mon code ASP pour ajouter la fonction qui peut être vissée dans IE?

+0

Il semble que le problème se produise côté client. Pouvez-vous donner un exemple de la balise HTML qui est produite? Ou mieux encore, un jsfiddle qui reflète le comportement que vous décrivez? – StriplingWarrior

+0

Voici un exemple de code rendu qui ne fonctionne pas: Texte (j'ai essayé d'ajouter un trailing et un retour à la fonction, les deux ne marchaient pas, comme je m'y attendais). Le code qui fonctionne fonctionne exactement de la même manière. La réponse de Fiddler ressemble à ce qu'elle devrait être quand ça marche, mais il n'y a aucune action enregistrée dans Fiddler quand ça ne marche pas. L'événement ne se fait tout simplement jamais virer. – StronglyTyped

+0

Si vous changez le 'onclick' en' alert ('hi'); ', a-t-il le même comportement? – StriplingWarrior

Répondre

2

Je suppose qu'il s'agit d'un problème avec les fonctions JavaScript que vous utilisez. Essayez de mettre alert messages à différents points dans l'exécution de Function1 pour déterminer où il se casse. Vous avez probablement un code javascript qui n'est pas compatible avec tous les navigateurs, mais qui ne peut être utilisé que pour certains éléments.

+0

J'ai oublié de mentionner que la fonction javascript appelait un gestionnaire générique, ce que je surveillais dans fiddler. Cela a rendu ma description trompeuse et je m'excuse. le problème était que dans mon vrai code, je passais 2 params à la fonction, et je n'avais pas de 2ème surcharge pour que la fonction gère le 2ème param et il y avait une erreur silencieuse. encore très, très étrange qu'il semblait toujours fonctionner environ 50% du temps dans IE. il semble que ce devrait être tout ou rien. – StronglyTyped

0

Il n'a probablement pas aimé ce # et il commente le code JS.

Essayez de le placer dans une balise de script:

<span id="mySpan"> 

<script type="text/javascript"> 
    document.getElementById("mySpan").addEventListener("click",function(){ 
    <% if(Request.Cookies["myCookie"] != null) 
     { 
    %> 
      MyFunction1(MyVal1); 
    <% 
     } 
     else 
     { 
    %> 
      MyFunction2(MyVal2); 
    <% 
     } 
    %> 
    } 
</script> 

Je suis désolé si ma syntaxe ASP est désactivée. Je ne l'ai pas codé depuis des années mais j'espère que vous aurez l'idée. Tous les codeurs ASP s'il vous plaît n'hésitez pas à corriger ce code pour moi;)

+0

est réellement requis et n'est pas rendu. – StronglyTyped

+0

Est-ce que vous le mettez passé IE pour ne pas faire quelque chose de stupide? ;) – Maverick

+0

Non. J'aimerais qu'ils arrêtent de faire IE. Je ne pourrais pas être plus sérieux à ce sujet. – StronglyTyped

Questions connexes