2011-10-05 3 views
8

He estado revisando los documentos en developer.mozilla.org y los documentos de desarrollo de Apple, pero no puedo encontrar documentación que explique si puede o no determinar programáticamente si una etiqueta HTML específica admite un eventListener determinado.¿Cómo se determinan programáticamente a qué eventos puede escuchar un objeto HTML?

Como sé que la etiqueta <script> no admitirá el oyente de clics ya que no hay nada sobre lo que hacer clic, pero ¿cómo puedo saberlo?

O bien, ¿hay alguna referencia fácil en alguna parte sobre qué eventos admite cada etiqueta?

Respuesta

5

Fuera de unos pocos casos extremos, sí se puede, de acuerdo con Perfection Kills:

El truco es que muchos navegadores modernos informe de propiedad correspondiente a un nombre de evento como existente en un elemento.

Básicamente, el código es el siguiente:

'onclick' in document.documentElement; // true 
'onclick2' in document.documentElement; // false 

Él lo utiliza para detectar el apoyo de eventos en varios navegadores, pero también podría ser utilizado para detectar si o no un elemento soporta un evento:

Se debe verificar un evento en un elemento que realmente podría originar ese evento.

Por lo que también obtener resultados como este:

'onreset' in document.documentElement; // false 
'onreset' in document.createElement('input'); // true 
+1

Tal vez esto no haga * exactamente * lo que desea, ya que ''onclick' en document.createElement ('script')' devuelve verdadero. Pero eso solo significa que si le das un '

0

te digo que leer this

... y lo mejor que hay que pensar es que los eventos son sólo para los objetos DOM. Entonces todos los objetos en DOM, podrían tener eventos (Pero lea la lista).

Cuestiones relacionadas