2012-01-30 19 views
9

¿Hay una forma de JavaScript para pasar datos personalizados a un evento de JavaScript creado manualmente?JavaScript Creación de eventos con datos adjuntos personalizados

Ok, digamos Tengo este código para crear y activar un evento de JavaScript:

var evObj = document.createEvent('HTMLEvents'); 
evObj.initEvent('submit', bubbling, cancelable); 
anElement.dispatchEvent(evObj); 

Esto funciona bien y puede ser manejado mediante el uso de este código:

document.addEventListener('submit', mySubmitEventHandler, true); 

Pero, necesito una forma de pasar datos adicionales al evento, de modo que mySubmitEventHandler sepa si el evento fue activado por un usuario o mediante la creación de un evento de JavaScript como se muestra arriba. Un valor booleano sería suficiente.

Entonces, ¿cómo puedo agregar algo como "myEvent = true" al recién creado evObj?

Y por favor no jQuery responde, necesito hacer esto en JavaScript puro.

Respuesta

15

Fije el parámetro a evObj.

evObj.flag = 'Hi!'; 
anElement.dispatchEvent(evObj); 

Este código muestra que el objeto de evento aprobada por dispatchEvent es igual a la del detector de eventos (Live demo):

var evObj = document.createEvent('HTMLEvents'); 
document.body.addEventListener('test', function(e){ alert(e === evObj); },true); 
evObj.initEvent('test', true, true); 
document.body.dispatchEvent(evObj); // Shows alert, "true" 
+2

¡Tan fácil que duele! Muchas gracias :) – Alp

+0

¡Truco muy innovador! Gracias :) –

3

su evObj es un objeto normal, puede agregar cualquier dato como una propiedad del objeto como evObj.myData = "blablabla"; y luego leer los datos en el oyente

Esperanza esto ayuda

+0

respuesta similar pero 1 ya que este fue publicada un minuto antes que la respuesta anterior! –

Cuestiones relacionadas