イベント発生元の取得[JavaScript]

この間までトップページのメニューがFirefoxでは選択できませんでした。
導入せずに解決を試みましたが手間がかかりすぎたのでインストールしてみることにしました。
そのついでにいくつかテストをしてみることにします。

今回はメニュー選択の件で引っかかった、イベントの発生元の取得を比較してみました。

クリック後、大体こんな感じで取得(サンプルページ)
var f = function(e) { ret += "<br>typeof(e) = " + typeof(e); if (e) { ret += "<br>e = " + e; ret += "<br>e.target = " + (('target' in e) ? e.target : "not exists"); ret += "<br>e.srcElement = " + (('srcElement' in e) ? e.srcElement : "not exists"); } else { ret += "<br>e = not exists"; } ret += "<br>"; ret += "<br>typeof(event) = " + typeof(event); if (event) { ret += "<br>event = " + event; ret += "<br>event.target = " + (('target' in event) ? event.target : "not exists"); ret += "<br>event.srcElement = " + (('srcElement' in event) ? event.srcElement : "not exists"); } else { ret += "<br>event = not exists"; } };

結果

Internet Explorer 8 Google Chrome 15 Firefox 8 Opera 10
typeof(e) undefined object object object
e - [object MouseEvent] [object MouseEvent] [object MouseEvent]
e.target - [object HTMLDivElement] [object HTMLDivElement] [object HTMLDivElement]
e.srcElement - [object HTMLDivElement] - [object HTMLDivElement]
typeof(event) object object undefined object
event [object] [object MouseEvent] - [object MouseEvent]
event.target - [object HTMLDivElement] - [object HTMLDivElement]
event.srcElement [object] [object HTMLDivElement] - [object HTMLDivElement]

バージョンはアクセスの最も多いものにあわせています。Safariは未確認です。
HTML5対応バージョンであればまた結果は違ってくる・・・のかな、それは置いておいて。

以下のようにすれば簡単に対処できそうです。

イベント発生元取得(サンプルページ)
var f = function(e) { if (e) { alert(e.target); } else { alert(event.srcElement); } };

※ちなみに if (event) と逆にするとFirefoxでは動きません。