これらの古いブラウザは、Netscape によって発明されたイベント ハンドラーを登録する 1 つの方法のみをサポートしています。 Netscape が最初に開発したため、Microsoft が JavaScript イベントをサポートするブラウザを構築したい場合は、Netscape の先例に従う必要があるため、互換性の問題は発生しません。したがって、このモードは、イベントをまったくサポートしない Mac 上の IE3 を除き、JavaScript をサポートするすべてのブラウザで動作します。
イベント ハンドラーの登録
インライン イベント登録モデルでは、イベント ハンドラーは次のような HTML 要素の属性のようなものです。
このリンクでクリック イベントが発生すると、イベント ハンドラーがトリガーされ、スクリプトが実行されます。警告ダイアログ ボックスが表示されます。 JavaScript 関数をトリガーすることもできます。
上記 2 つの例のイベント名の大文字と小文字は単に習慣の問題です。 , HTML 大文字と小文字は区別されないので、自由に記述できます。 XHTML では、すべての属性名を小文字にする必要があるため、XHTML を使用している場合は、名前を onclick として記述する必要があります。
使用しないでください
このインライン登録モデルは非常に古く信頼性がありますが、欠点があります。彼は、ここには属さない XHTML 構造層内に JavaScript コードを記述するように要求しています。
したがって、この方法は使用しないことを強くお勧めします。ここに詳しい説明があります。
これらの古いモデルを理解することは、JavaScript イベント処理の全体的な感覚をつかむのに非常に役立ちますが、以下で説明する最新のモデルを使用することをお勧めします。
デフォルト アクション
当時、Netscape はデフォルト アクションを設定しており、デフォルト アクションの実行を防ぐ方法がありました。彼のモデルはブラウザ戦争と標準を救い、今でもうまく機能します。
ご存知のとおり、ユーザーがリンクをクリックすると、ブラウザは href 属性に従ってページを読み込みます。これはリンクに対するデフォルトのアクションです。しかし、onclick イベント ハンドラーを定義するとどうなるでしょうか?実装されるべきですが、いつになるのでしょうか?
このリンクをクリックすると、イベント ハンドラーが最初に実行されます。結局のところ、デフォルトのアクションが発生すると、新しいページがロードされ、イベント ハンドラー自体を含む古いページがメモリから消去されます。 onclick イベント ハンドラーが実行される場合は、デフォルト アクションの前に実行する必要があります。
これには非常に重要な原則があります。イベントがデフォルト アクションとイベント ハンドラーの両方をトリガーする場合:
、イベント ハンドラーが最初に実行されます
、デフォルト アクションは後で実行されます
。つまり、上記の例では、 doSomething(. ) が最初に実行され、ブラウザがリンクを開きます。
デフォルト イベントのブロック
これらが決定されると、ほとんどの人はデフォルト イベントを防ぐ方法を考え始めます。この例では、ブラウザーが新しいページを開けないようにすることができます。
したがって、イベント ハンドラーはブール値 (true または false) を返すことができます。false の意味は、「デフォルトのアクションを実行しない」ということです。このようにして、例を次のように変更できます:
このリンクは実行されません。この関数が実行されると、プログラムは false を返し、ブラウザーにデフォルトのアクションを実行しないように指示します。
デフォルトのアクションをいつ実行するか、いつ実行しないかを関数に決定させる必要がある場合があります。したがって、例を次のように変更できます: