61 votes

Le déclenchement d'un événement avec Prototype

Quelqu'un sait d'une méthode pour déclencher un événement à l'état de Prototype, comme vous pouvez le faire avec jQuery de déclenchement de la fonction?

J'ai lié un écouteur d'événement à l'aide de l'observer méthode, mais je tiens également à être en mesure de déclencher l'événement en programmant.

Merci d'avance

85voto

Aron Rotteveel Points 27894

event.simulate.js correspond à vos besoins.

J'ai utilisé plusieurs fois et il fonctionne comme un charme. Il vous permet de déclencher manuellement le natif d'événements, cliquez ou passez la souris comme ceci:

$('foo').simulate('click');

La grande chose à ce sujet est que tous les gestionnaires d'événements seront toujours exécutées, comme si vous avez cliqué sur l'élément de vous-même.

Pour des événements personnalisés , vous pouvez utiliser la norme de méthode de prototype Event.fire().

35voto

Greg Points 132247

Je ne pense pas qu'il y est un construit dans de Prototype, mais vous pouvez l'utiliser (pas encore testé mais devrait au moins obtenir dans la bonne direction):

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');

5voto

John D Points 41

J'ai trouvé ce message utile... http://jehiah.cz/archive/firing-javascript-events-properly

Il couvre un moyen de déclencher des événements dans IE et Firefox.

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);
    }
}

3voto

Haqa Points 303

Les réponses ici sont remplies de "Normale" événements", qui sont des événements qui sont définis par l'Utilisateur de l'Agent, mais pour des événements personnalisés, vous devez utiliser le prototype du "feu" de la méthode. par exemple

$('something').observe('my:custom', function() { alert('Custom'); });
.
.
$('something').fire('my:custom'); // This will cause the alert to display

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X