2017-03-11 3 views
2

JavaScriptでイベントを発生させる方法は知っていますが、キャンセル可能にする方法はわかりません。イベントハンドラでevent.preventDefault()経由キャンセル可能なカスタムイベントを起動する方法

document.dispatchEvent(new CustomEvent("name-of-event", {})); 

私は、次のコードを書かれているが、どのようにそれはevent.preventDefault()を経由して、ネイティブな方法で可能ですか?

document.dispatchEvent(new CustomEvent("my-event",function keepGoing(result){ 
    if(result){ 
     // continue ... 
    } 
})); 

// And then in event listener: 
document.addEventListener('my-event',function(event,keepGoing){ 
keepGoing(true); 
// Or keepGoing(false); 
}); 
+0

[MCVE]作成の代わりに、不完全なコードを投稿してください - ここでは、jQueryの方法です:http://stackoverflow.com/questions/2229647/jquery-how-do-i- use-event-prevent-default-with-custom-events – mplungjan

答えて

2

CustomEventコンストラクタでは、イベントcancelableを行うために使用可能な第2のオプションパラメータを取ります。 MDNの記事Creating and triggering eventsを参照してください。

var event = new CustomEvent("my-event", { 
 
    cancelable: true 
 
}) 
 

 
document.addEventListener('my-event', function (event) { 
 
    event.preventDefault() 
 
}) 
 

 
console.log(
 
    document.dispatchEvent(event) ? 'Event was not cancelled' : 'Event was cancelled' 
 
)

2

CustomEventコンストラクタは、2番目の引数としてCustomEventInitを受け付けます。 CustomEventInitは、ここで説明するEventInitの拡張機能ですhttps://developer.mozilla.org/en-US/docs/Web/API/Event/Event

最後に、

document.dispatchEvent(new CustomEvent('my-event', {cancelable: true})); 
+0

ありがとうございます –

関連する問題