2013-04-11 10 views
15

jsでイベントコンストラクタを使用する良い例は何ですか?学習の過程で、このページに走ったので、私は、どのように適切にJavaScriptでイベントを作成し、火災に把握しようとしています

先頭に次の私を知らせ

https://developer.mozilla.org/en-US/docs/DOM/document.createEvent

createEventメソッドは推奨されていません。代わりにイベントコンストラクタを使用します。

グーグルJSのイベントコンストラクタはあまり実りありませんでした。一般的なコンストラクタの話題ですが、私が探しているものではありません。誰かが私にイベントコンストラクタとは何かを説明し、その使用法の良い例を提供してもらえますか?

+0

ちょうどノートの代替品です。時には、* 1 *ブラウザで廃止予定となっている方法が、利用可能なすべてのブラウザで最も広くサポートされています。 – gcb

答えて

9

https://developer.mozilla.org/en-US/docs/Web/API/CustomEventから:

イベントが今CustomEventと呼ばれるクラスにカプセル化されているようです。古いdocument.createEventは、イベントオブジェクトを返すファクトリメソッドと考えることができます。これで、document.createEventを使用してオブジェクトを作成するのではなく、オブジェクトを直接作成するアクセス権が得られました。

//this is the new way 
    var my_event = new CustomEvent('NewEventName'); 
    var my_element = document.getElementById('TargetElement'); 
    my_element.dispatchEvent(my_event); 

//this is the old way 
    var my_event = document.createEvent('NewEventName'); 
    var my_element = document.getElementById('TargetElement'); 
    my_element.dispatchEvent(my_event); 
1

あなたがにaddEventListener()

https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener

を使用したいここでイベントを取り付けるためのマイライブラリのコードはだ、私はstackoverflowの上でこれらを発見し、私のアプリグローバル名前空間の中に置く:

var app={} 

app.listenEvent=function(eventTarget, eventType, eventHandler) { 
    if (eventTarget.addEventListener) { 
     eventTarget.addEventListener(eventType, eventHandler,false); 
    } 
    else if (eventTarget.attachEvent) { 
     eventType = "on" + eventType; 
     eventTarget.attachEvent(eventType, eventHandler); 
    } 
    else { 
    eventTarget["on" + eventType] = eventHandler; 
    } 
} 


app.cancelEvent=function(event) { 
    if (event.preventDefault) 
     event.preventDefault() 
    else 
     event.returnValue = false; 
} 


app.cancelPropagation=function(event) { 
    if (event.stopPropagation) { 
     event.stopPropagation(); 
    } else { 
    event.cancelBubble = true; } 
} 

イベントのリスニングを追加するには:

app.listenEvent(document.aform.afield, 'focus', function(){console.log(arguments)}) 

これらの機能は素晴らしいです、彼らはすべてのブラウザで動作します。

+4

あなたの答えは、ポイントを逃す。 OPはプログラムでイベントを作成し、イベントリスナをアタッチしないという手段について尋ねました。 – timkg

+0

かなり批判的な発言。特定のフォームがフォーカスを受け取ったときにconsole.log()を呼び出すイベントを作成する方法を示しました。 OPは何を求めていると思いますか? onfocusはイベント、onkeydownはイベント、onPowerOffのような独自のイベントを作成することはできません。 –

+2

私はあなたを怒らせて申し訳ありません。 OPはプログラムで自分のイベントを発生させたい。通常、ユーザーのやりとりによってのみ発生するイベントを作成(=新規作成)することができます。ユーザーが要素をクリックしたかのように、要素に対して「クリック」イベントを作成できます。それはOPが求めていることです。 EDIT 「特定のフォームがフォーカスを取得したときにconsole.log()を呼び出すイベントを作成する方法を示しました。 - >いいえ、**イベントを作成する方法**ではなく**イベントハンドラ**をアタッチする方法を示しました。 – timkg

関連する問題