2014-03-01 14 views
5

Ich schreibe einen Event-Dispatcher in JavaScript, und ich habe beschlossen, auf Standard-Js CustomEvent-Klasse basieren. Ich kann nicht herausfinden, wie erkennen wenn Ereignisausbreitung im Listener gestoppt wurde (über e.stopPropagation()). Soll ich lieber selbst eine Event-Objekt-Implementierung schreiben?Wie überprüft man, ob die Ereignisausbreitung gestoppt wurde?

+0

nicht sicher, was du meinst. Wenn die Übertragung gestoppt wurde, wird Ihr Listener niemals aufgerufen. – Bergi

+0

@Bergi ist es gut, für Tests zu wissen. – mightyiam

Antwort

3

Soweit ich das beurteilen kann, gibt es keine Möglichkeit, sondern auf der Event.prototype.stopPropagation Funktion auszuspionieren.

-2

Haben Sie es versucht?

e.isPropagationStopped() 

Oder

event.isPropagationStopped() 
+0

Ist dies eine jQuery-spezifische Funktion? Ich kann keine Informationen in MDN finden. – Olgierd

+2

Nein, es ist ein Javascript-Ereignis. Schau es dir auf [W3C] an (http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/events.html#Events-Event-isPropagationStopped). – Koen

+0

Dies funktioniert nur bei benutzerdefinierten Ereignissen, nicht bei regulären Ereignissen. – James

0

Die CustomEvent eine boolesche Eigenschaft haben defaultPrevented wenn das Attribut cancelable auf true und die preventDefault() Methode wurde verwendet, das Ereignis festgelegt wurde.

var evt = new CustomEvent("custom", {cancelable : true}); 
console.log(evt.defaultPrevented); 
evt.preventDefault(); 
console.log(evt.defaultPrevented); 

Browser Support: Chrome 18, IE 9, Rand, Opera 11, Safari 5.

Verwandte Themen