2009-12-02 16 views
5

Usando jquery, me gustaría obtener el javascript del atributo onClick de una etiqueta.jquery attr ("onClick") - es decir, y ff

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

En Firefox: alert($('a').attr("onClick")) espectáculos: alert("boo")

En IE 6/7: alert($('a').attr("onClick")) espectáculos: function anonymous(){alert("boo");return false;}

¿Cómo puedo recuperar sólo el Javascript, y no la función envuelto, en IE 6/7 usando jquery? (o javascript simple)?

Franko

+0

Sólo por curiosidad, ¿por qué necesita específicamente para recuperar el 'alert ("boo")' en este ejemplo? ¿Lo estás llamando desde otro lugar o simplemente estás explorando en este momento? Si intenta recuperar el valor por otro motivo, puede haber una forma diferente de manejarlo. – JamesEggers

+0

solo estoy explorando en este momento - me preguntaba por qué no puedo obtener el texto/por qué la función se devuelve en ie6/7. ie8 se comporta como firefox ... –

+0

@frankie boyle Ok. Tengo curiosidad por saberlo ahora, pero quería asegurarme de que no hubiera un enfoque diferente si no estuvieras explorando. Gracias. – JamesEggers

Respuesta

4

¿Cómo puedo recuperar sólo el Javascript, y no la función envuelto, en IE 6/7

lo general, no quiere depender de los valores de cadena de controladores de eventos en línea en absoluto (en de hecho, en general, debe evitar el uso de los atributos del manejador de eventos en línea a favor de la vinculación a las funciones del script, especialmente si está utilizando jQuery, donde este enfoque es la norma). Pero si es necesario, la solución alternativa es el método DOM getAttributeNode.

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

Las cadenas totalmente de acuerdo para los manejadores de eventos en línea son incorrectas - Solo estaba teniendo una jugada y no podía ver por qué IE se comportaba de manera diferente ... ¡Gracias! –

+0

Pero luego está ASP.NET WebForms donde un grupo de controladores de eventos DOM 0 onclick se generan de manera predeterminada. Me alegré de encontrar esta respuesta porque necesitaba meterme con ellos ... bueno, úsalos ;-) – Oliver

0

Ha intentado:

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

En XHTML onClick no es la versión correcta.

+0

Como IE no entiende XHTML (lo ve como HTML mal formado) es poco probable que lo sea. – NickFitz

+0

usando minúsculas Obtengo: función onclick() {alerta ("boo");} - tan mismo número –

2

Internet Explorer 8 < tiene una aplicación completamente roto de setAttribute y getAttribute que se ocupan de la propiedadcon el nombre dado en lugar del atributo.

No estoy al tanto de un trabajo.

+1

Para expandir esto: el valor del atributo cuyo nombre es 'onclick' de la etiqueta de anclaje es 'alerta() 'llamada; el valor de la propiedad del nodo DOM correspondiente a esa etiqueta es la función anónima. –

2

Mejor que la adición de onclick atributo es nombre de IE6/IE7 esta solución:

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

Safe Browser:

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