2011-08-03 4 views

答えて

16

違いはありません。それは同じことのためのちょうど異なる用語です。

イベントハンドリングの目的で、関数をDOM要素に関連付ける方法はさまざまです。標準がフラックスになったとき(または単に実装者が厄介で困難なとき)、差異は現れたが、最終的には基本的に同じである。あなたは、イベントハンドラの登録の並べ替えに使用するかについて混乱している場合は

、次のことができます。

  • Read more about the topic、おそらくブラウザ・バイ・ブラウザ毎に、使用するアプローチを選択してください。
  • 人気のJavaScriptフレームワークの1つを選択して、ハンドラ
+0

答えをありがとう。したがって、これらの2つの間に違いがない場合は、ブラウザサポートのためにイベントハンドラを使用するだけです。 (私は2人のリスナーが必要ですが、ハンドラは1人だけです)。 –

+0

しかし、 "リスナー"と "ハンドラ"の間には違いはありません。したがって、あなたは3つのリスナ、または3つのハンドラ、あるいはそれらの組み合わせがあります。実際にハンドラーをつける方法を混在させるのは、おそらく**まったくの習慣ではありません。 – Pointy

+0

ええ、私はそれらを混ぜ合わせません。私は、2つのリスナー(NSイベントモデルのリスナとMSイベントモデルのリスナ)の代わりに、ハンドラが1つだけ必要だと言っていました。 –

23

ハンドラとリスナーを取り付けるためのメカニズムを使用するのと同じである1 - イベントを処理する機能のためだけの同義語。 「ハンドラ」はおそらくより受け入れられた用語であり、確かに私にとってより意味的に正しいものです。用語「リスナー」要素にイベントを追加するために使用されるコードから導出される:

element.addEventListener('click', function() { /* do stuff here*/ }, false); 

あなたは、しかし、本当にnitpicky得ることができ、別の意味にダウン2を破ります。あなたが傾けている場合、 "ハンドラー"は、 "リスナー"を追加するときにイベントを処理する関数の言葉であり、したがって、単一の "ハンドラー"を利用するいくつかの "リスナー"を持つことができます。考えてみましょう:

// handler is synonymous with function 
function someFunction(e) { 
    if (typeof e == 'undefined') 
    alert('called as a function'); 
    else 
    alert('called as a handler'); 
} 


// use someFunction as a handler for a 
// click event on element1 -- add a "listener" 
element.addEventListener('click', someFunction, false); 
// use an anonymous function as a handler for a 
// click event on element1 -- add another "listener" 
element.addEventListener('click', function() { alert('anonymoose'); }, false); 


// use someFunction as a handler for a 
// click event on element2 -- add a "listener" 
element2.addEventListener('click', someFunction, false); 

// call someFunction right now 
someFunction(); 

は、したがって、上記のコードでは、私が2、「ハンドラ」(someFunctionと匿名関数)と3「リスナー」を持っています。

この場合も、これはすべてのセマンティクスです。すべての実用的な目的で、リスナーとハンドラという用語は同じ意味で使用されています。区別が必要な場合は、リスナーは、ハンドラファンクション)へのコールをトリガーするイベントへのサブスクリプションです。

泥が澄んでいますか?

+0

コメントとの一貫性を保つためには、 "element1.addEventListener(...)"にすることができます –

+0

多かれ少なかれJavaと同じです。 http://stackoverflow.com/a/4725508/3184778今より意味をなさない。 Thx – kouretinho

+0

_匿名_ LOL:P – Arjun

関連する問題