Benutzerdefinierte Ereignisse-Modell ohne mithilfe von DOM-Ereignisse in JavaScript

Ich bin neu in JavaScript und die Programmierung im Allgemeinen, und ich habe einige Fragen über Objekte und Ereignisse.

Sagen, ich habe ein Objekt:

var computer = {
    keyboard: {}
}

Was ich Suche, ist ein Weg, um Ereignisse zu registrieren, um die Tastatur-Objekt:

computer.keyboard.registerEvent( "keyEscape" );

Auslösen des Ereignisses:

computer.keyboard.dispatchEvent( "keyEscape" );

Und anlegen von event-Handlern:

computer.keyboard.addEventListener( "keyEscape", function() {...} );

Ich wissen, wie das mit den DOM-Elemente, aber keine Objekte. Ist das etwas, das getan werden kann, die in JavaScript (vielleicht mit Hilfe von JQuery)?

Auch nur das geringste bisschen Beratung würde geschätzt werden, deutlich.

  • Was ist der Anwendungsfall? Nicht-DOM-Objekte würde nicht reagieren auf Ereignisse wie Tastendrücke. Warum nicht "normale" Funktionen?
  • Ich würde definieren keydown/keyup-event-Handler, und überprüfen Sie die esc-Taste
  • Ich erstellte eine "HTML" vgui-panel in ein source-engine Spiel, und ich brauche eine pass-Taste gedrückt, um das Fenster (browser), wenn es nicht sichtbar ist. Der einzige Weg, dies zu tun ist durch den Aufruf Panel:RunJavaScript( "javascript" ), die führt den angegebenen javascript. Die erste Möglichkeit die ich mir vorstellen könnte, dies zu tun ist durch die Registrierung von Ereignissen durch RunJavaScript, und dann brennen Sie Sie auf die gleiche Weise.
  • Ich verweisen Sie auf diesen Artikel developer.mozilla.org/en-US/docs/DOM/document.createEvent
  • Sind diese nicht von DOM-Ereignissen?
  • Nicht unbedingt, Nein. Sie können Veranstaltungen erstellen (mit document.createEvent und lösen Sie programmgesteuert.
  • Wenn es möglich ist, mit jQuery ist es möglich, ohne jQuery; das ist eine verwirrende Punkt für viele neue Entwickler, jQuery ist nur eine Bibliothek von Funktionen/Objekte, die in javascript geschrieben.
  • Vielen, vielen Dank! Aus irgendeinem Grund document.createEvent geklickt dieser Zeit C:
  • Können Sie Blick auf dieses stackoverflow.com/questions/399867/custom-events-in-jquery
  • Danke @jcubic. Ich habe gerade vor kurzem festgestellt, dieser Artikel über Bindung in JQuery.
  • Dokument.createEvent teilweise abgeschrieben und nicht gut dokumentiert. MDN empfiehlt die CustomEvent(). developer.mozilla.org/en-US/docs/Web/API/CustomEvent/... caniuse.com/#feat=customevent
  • Denken Sie daran: ein Ereignis ist nur ein asynchroner Aufruf der Funktion. Siehe die nette Antwort von Herrn @Mohsen darüber, wie es zu implementieren.

InformationsquelleAutor NTDave | 2013-03-09
Schreibe einen Kommentar