小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

イベント制御のまとめ

以下の前回、前々回のイベント制御のまとめです。

◆stopPropagation(Firefox系)

イベントフローにおいてこれ以上イベントが伝えられるのを止めるために使用する。

◆preventDefault(Firefox系)

通常の実装により実行されるデフォルトのアクションに実行を妨げる。

◆cancelBubble(IE

本プロパティにtureをセットするとイベントがイベントハンドラの階層へ上がる(バブルアップ)のをキャンセルする。

◆returnValue(IE

本プロパティにfalseをセットするとイベントのソースエレメントのデフォルトアクションをキャンセルする。


実は、JavaScriptには、以下の3つのイベントモデルがあります。

  1. オリジナルイベントモデル
  2. DOMレベル2イベントモデル(stopPropagationやpreventDefault等)
  3. IEイベントモデル(cancelBubbleやreturnValue等)

オリジナルイベントモデルは、昔からのモデルで、大体どんなブラウザでもサポートされています。
DOMレベル2イベントモデルは、W3Cの世界標準仕様で、IE以外の最近のブラウザならサポートされています。
IEイベントモデルは、DOMレベル2イベントモデルが出来る前にIEでサポートされました。


オリジナルイベントモデル時代に、IEネットスケープの2大ブラウザが、W3Cを無視して独自に新しいイベントモデルを追加していきました。
結局、ネットスケープイベントモデルとIEイベントモデルが合体したようなものがDOMレベル2イベントモデルになったようです(もしかしたら間違った認識かも?)。
結果的に世界標準仕様のDOMレベル2イベントモデルが出来た今も、IEはそれに準拠していません。準拠しようとしません。プログラマ泣かせです。早く、FirefoxChromeで天下統一して!