sirve - prototype javascript tutorial
Dispara un evento con Prototype (4)
¿Alguien sabe de un método para activar un evento en Prototype, como se puede hacer con la función de disparo de jQuery?
He vinculado un oyente de evento utilizando el método de observación, pero también me gustaría poder desencadenar el evento programáticamente.
Gracias por adelantado
Encontré útil esta publicación ... http://jehiah.cz/archive/firing-javascript-events-properly
Cubre una forma de disparar eventos tanto en Firefox como en IE.
function fireEvent(element,event){
if (document.createEventObject){
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent(''on''+event,evt)
}
else{
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true ); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
}
Las respuestas aquí son verdaderas para los eventos "normales", es decir, los eventos que están definidos por el agente de usuario, pero para los eventos personalizados, debe usar el método de "fuego" del prototipo. p.ej
$(''something'').observe(''my:custom'', function() { alert(''Custom''); });
.
.
$(''something'').fire(''my:custom''); // This will cause the alert to display
No creo que haya uno incorporado a Prototype, pero puede usarlo (no probado, pero al menos debería llevarlo en la dirección correcta):
Element.prototype.triggerEvent = function(eventName)
{
if (document.createEvent)
{
var evt = document.createEvent(''HTMLEvents'');
evt.initEvent(eventName, true, true);
return this.dispatchEvent(evt);
}
if (this.fireEvent)
return this.fireEvent(''on'' + eventName);
}
$(''foo'').triggerEvent(''mouseover'');
event.simulate.js
ajusta a tus necesidades.
Lo he usado varias veces y funciona como un hechizo. Le permite activar manualmente eventos nativos , como hacer clic o colocar el cursor en el aire de esta forma:
$(''foo'').simulate(''click'');
Lo bueno de esto es que todos los controladores de eventos adjuntos se seguirán ejecutando, como si hubieras hecho clic en el elemento tú mismo.
Para eventos personalizados , puede usar el método prototipo estándar Event.fire()
.