2009-12-02 9 views
5

En utilisant jquery, j'aimerais obtenir le javascript de l'attribut onClick d'une étiquette A.jquery attr ("onClick") - ie et ff

<a href='#' onClick='alert("boo");' /> 

Dans Firefox: alert($('a').attr("onClick")) montre: alert("boo")

Dans IE 6/7: alert($('a').attr("onClick")) montre: function anonymous(){alert("boo");return false;}

Comment puis-je récupérer simplement le javascript, et non la fonction enveloppée, dans IE 6/7 utilisant jquery? (ou javascript simple)?

Franko

+0

Juste curieux, pourquoi avez-vous besoin spécifiquement pour récupérer les 'alert ("boo")' dans cet exemple? L'appelez-vous d'un autre endroit ou juste en train d'explorer en ce moment? Si vous essayez de récupérer la valeur pour une autre raison, il peut y avoir une manière différente de la gérer. – JamesEggers

+0

juste explorant pour le moment - se demandait pourquoi je ne peux pas obtenir le texte/pourquoi la fonction est retournée dans IE6/7. ie8 se comporte comme firefox ... –

+0

@frankie boyle Ok. Je suis curieux à propos de moi maintenant mais je voulais m'assurer qu'il n'y avait pas une approche différente si vous n'étiez pas simplement en train d'explorer. Merci. – JamesEggers

Répondre

4

Comment puis-je récupérer simplement le javascript, et non la fonction enveloppée, dans IE 6/7

En général, vous ne voulez pas compter sur les valeurs de chaîne pour les gestionnaires d'événements en ligne du tout (en En fait, évitez généralement d'utiliser des attributs de gestionnaire d'événements en ligne au lieu de vous lier aux fonctions du script, surtout si vous utilisez jQuery, où cette approche est la norme. Mais si vous devez, la solution de contournement est la méthode DOM getAttributeNode.

var link= $('a')[0]; // or whatever 
alert(link.getAttributeNode('onclick').value); 
+0

Les chaînes totalement d'accord pour les gestionnaires d'événements en ligne sont fausses - j'étais juste en train de jouer et de voir pourquoi IE se comportait différemment ... Merci! –

+0

Mais il y a aussi ASP.NET WebForms où un tas de gestionnaires d'événements DOM 0 onclick sont générés par défaut - j'étais content de trouver cette réponse parce que j'avais besoin de jouer avec eux ... eh bien, utilisez-les ;-) – Oliver

0

Avez-vous essayé:

alert($('a').attr("onclick")) 

En XHTML onClick n'est pas la bonne version.

+0

Comme IE ne comprend pas XHTML (il le voit comme un HTML mal formé), il est peu probable qu'il le soit. – NickFitz

+0

en utilisant les minuscules Je reçois: fonction onclick() {alert ("boo");} - donc même numéro –

2

Internet Explorer 8 < a une implémentation complètement brisée de setAttribute et getAttribute qui traitent de la propriété avec le nom donné au lieu de l'attribut .

Je ne suis pas au courant d'un travail autour.

+1

Pour développer ceci: la valeur de l'attribut dont le nom est 'onclick' de la balise d'ancrage est le 'alerte() 'appel; la valeur de la propriété du noeud DOM correspondant à cette étiquette est la fonction anonyme. –

2

Mieux que l'ajout onclick attribut est au nom de IE6/IE7 cette solution:

$("a").click(function() { .. anything to do .. }) 
0

sécurité du navigateur:

jQuery('a')[0].getAttribute('onclick');