desencadenar eventos de nivel dom

¿Alguien sabe de un método para activar un clic en un elemento con mootools en el nivel dom?

foo.fireEvent('click') por ejemplo, solo se agregarán eventos de disparo por mootools, que no es muy útil para esta aplicación en particular.

Aquí hay un violín con un ejemplo de juguete: puede ver que hacer clic en el botón superior activará ambas funciones del controlador de eventos, mientras que intentar usar el botón inferior para activar un clic solo activará la segunda función.

http://jsfiddle.net/Tc4Bv/

¡Cualquier ayuda será apreciada, gracias!

preguntado el 12 de junio de 12 a las 17:06

Vaya, en mi experiencia, ha sido mejor morder la bala y refactorizar su controlador de clics en línea existente para agregarlo a través de mootools. Como dicen, se ve un poco maloliente -

El problema es que estoy interactuando con un script remoto de terceros que adjunta un evento a un elemento en la página a través de un método desconocido. Si fuera mi código lo que estaba tratando de activar, no sería un problema. -

1 Respuestas

Los navegadores modernos tienen un Element.click método disponible, por lo que podría intentar algo como esto:

Element.implement({
    synteticClick: function() {
        var click = 'click';
        (this[click] && !(this[click]())) || this.dispatchEvent(new Event(click));
        return this;
    }
});

http://jsfiddle.net/dimitar/LUPYK/

funciona/probado en el último FF, Chrome, también IE9 e IE9 en modo IE7 (compatible).

tenga en cuenta que el objeto de evento puede ser básico, es decir, carecer de clientX/Y, etc., por lo que depende en gran medida de lo que haga en el otro lado...

Respondido el 13 de junio de 12 a las 11:06

De hecho, estaba experimentando con eso: parece que el método de clic solo existe en elementos de la interfaz de usuario, como enlaces y botones; no imágenes. - sam dufel

Ah, sigo experimentando algunas peculiaridades, pero esto me puso en el camino correcto, gracias. - sam dufel

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.