16

インライン イベント ハンドラーは悪い習慣と見なされますか?

例えば:<button onclick=someFunction()>Click me!</button>

もしそうなら、インライン イベント ハンドラを使用することの欠点は何ですか?

4

3 に答える 3

23

それは悪い考えです...

  1. ベスト プラクティスは、コンテンツ、スタイル、スクリプトを明確に区別することを提案しています。インライン JavaScript (または CSS) で HTML を混乱させることは、これと矛盾します。

  2. -style eventsで各種類のイベントを 1 つだけバインドできるため、たとえば、on*2 つのイベント ハンドラーを持つことはできません。onclick

  3. イベントがインラインで指定されている場合、JS は文字列 (属性値は常に文字列) として指定され、イベントの発生時に評価されます。評価は悪。

  4. 名前付き関数を参照する必要があります。これは必ずしも理想的ではなく (通常、イベント ハンドラーは無名関数を使用します)、グローバルにアクセスできる必要がある関数に影響を与えます。

  5. インライン JavaScript の評価を許可するには、コンテンツ セキュリティ ポリシー (CSP) を (賢明にも) 拡張する必要があります。

addEventListenerつまり、専用のAPI を介して、または jQuery などを介してイベントを一元的に処理します。

【2021年編集】

最近では、リアクティブ フレームワークがこの傾向をいくらか逆転させています。リアクティブ フレームワークのイベントは通常、Vue などの属性として指定されます。

<p v-on:click=foo>Hello</p>

...ここfooで、現在のコンポーネントのデータ オブジェクトのメソッドです。

于 2012-07-31T14:46:24.243 に答える