Wie erstelle ich eine benutzerdefinierte Ereignisklasse in Javascript?
Wie erstelle ich eine benutzerdefinierte event-Klasse ähnlich zu ActionScript? Was ich damit meine, ist eine Klasse, die ich verwenden können, um das Feuer aus meinen eigenen Veranstaltungen, senden Sie die erforderlichen Daten ein.
I don ' T wanna die Verwendung von third-party-Bibliotheken wie YUI oder jQuery zu tun. Mein Ziel ist es, in der Lage sein zu senden, ein Ereignis, das so aussieht.
document.addEventListener("customEvent", eventHandler, false);
function eventHandler(e){
alert(e.para1);
}
document.dispatchEvent(new CustomEvent("customEvent", para1, para2));
Bitte keine third-party-library-Lösungen.
InformationsquelleAutor der Frage Josua Pedersen | 2010-01-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Methode, die für mich gearbeitet wurde, rufen Dokument.createEvent(), init und Versand mit Fenster.dispatchEvent().
InformationsquelleAutor der Antwort pfleidi
Ich bin ein wenig spät zur party hier, aber war auf der Suche für die gleiche Sache. Ich bin nicht scharf auf die erste Antwort (siehe oben), weil es stützt sich auf das Dokument zu verwalten, das benutzerdefinierte Ereignis. Dies ist gefährlich, weil es global und potenziell Konflikt mit einem anderen script sollte das Skript zufällig verlassen Sie sich auf die gleiche benutzerdefinierte Ereignis.
Die beste Lösung, die ich gefunden habe ist hier:
Nicholas C. Zakas - eigene Events in Javascript
Leider, da javascript nicht unterstützt, ist die Vererbung Schlüsselwörter, es ist ein bisschen chaotisch mit prototyping, aber es ist definitiv hält die Dinge ordentlich.
InformationsquelleAutor der Antwort Rich Hauck
Dies ist unkompliziert, wenn Sie mithilfe von DOM-Elementen zur Vermittlung der Ereignisse.
Gegeben ein element:
Für einen client zu abonnieren:
Dann zu Versand/raise/Feuer der Fall, verwenden Sie diesen code:
InformationsquelleAutor der Antwort Drew Noakes
Diese von John Resig:
Mehr an seinem blog-post an http://ejohn.org/projects/flexible-javascript-events/.
InformationsquelleAutor der Antwort nicholas
Ich dachte nur der Zuweisung einer handler unterstützt, um einen neuen namespace, d.h. einen Verweis auf eine unterstützte Veranstaltung. Der code unten funktioniert (einfügen in der Konsole von Chrome), aber Sie können schreiben Sie es in einem besseren format, und Sie sollten zusätzliche Hilfsmethoden (können neu definieren, sich selbst als gut), für xBrowser-Unterstützung, und für die sniffing-support-Arten (die, nachdem Sie haben erkannt, welcher Weg zu benutzen, müssen Sie die Funktion selbst neu definieren. Ich hoffe, ich habe unten hilft.
InformationsquelleAutor der Antwort WHill
Es ist gar nicht so schwer - eigentlich gibt es nicht so viele event-Definitionen nur drei Versionen. Die erste ist die korrekte (
addEventListener
), dann gibt es den IE Weg (attachEvent
) und dann gibt es noch die Kompatibilität Weise für ältere browser (element.onevent = function
)So dass eine vollständige event-handling-Lösung würde wie folgt Aussehen:
und zu löschen events:
und ein Beispiel:
Dies ist nicht wirklich ein vollständiges Beispiel, aber da die Kompatibilität handler überschreibt immer die Vorherige Veranstaltungen (es ist nicht Anhängen Aktionen, die es überschreiben), so dass Sie wahrscheinlich möchte überprüfen, ob ein handler ist bereits festgelegt, und speichern Sie es dann in eine temporäre variable und das Feuer im inneren der event-handler-Funktion.
InformationsquelleAutor der Antwort Andris