インライン イベント ハンドラーは悪い習慣と見なされますか?
例えば:<button onclick=someFunction()>Click me!</button>
もしそうなら、インライン イベント ハンドラを使用することの欠点は何ですか?
インライン イベント ハンドラーは悪い習慣と見なされますか?
例えば:<button onclick=someFunction()>Click me!</button>
もしそうなら、インライン イベント ハンドラを使用することの欠点は何ですか?
それは悪い考えです...
ベスト プラクティスは、コンテンツ、スタイル、スクリプトを明確に区別することを提案しています。インライン JavaScript (または CSS) で HTML を混乱させることは、これと矛盾します。
-style eventsで各種類のイベントを 1 つだけバインドできるため、たとえば、on*
2 つのイベント ハンドラーを持つことはできません。onclick
イベントがインラインで指定されている場合、JS は文字列 (属性値は常に文字列) として指定され、イベントの発生時に評価されます。評価は悪。
名前付き関数を参照する必要があります。これは必ずしも理想的ではなく (通常、イベント ハンドラーは無名関数を使用します)、グローバルにアクセスできる必要がある関数に影響を与えます。
インライン JavaScript の評価を許可するには、コンテンツ セキュリティ ポリシー (CSP) を (賢明にも) 拡張する必要があります。
addEventListener
つまり、専用のAPI を介して、または jQuery などを介してイベントを一元的に処理します。
【2021年編集】
最近では、リアクティブ フレームワークがこの傾向をいくらか逆転させています。リアクティブ フレームワークのイベントは通常、Vue などの属性として指定されます。
<p v-on:click=foo>Hello</p>
...ここfoo
で、現在のコンポーネントのデータ オブジェクトのメソッドです。