ALGOBIT

2009/10/28

srcElement はないのか

Filed under: 離散的な気まぐれ — タグ: , — Kohyama @ 03:12

ウェブ閲覧は主に Chrome を, 場合によって Internet Explorer (以下 IE) を使ってます.
JavaScript は IE で動くように書いてました.
まわりを見回すと Firefox をお使いの方が結構多いようなので, Firefox (現行バージョン 3.5.3) で JavaScript を使う自分の個人ページを確認.
動かないところがあります.
DOMの仕様が違うんだね.

ということで, Firefox 対応の覚書.

IE Firefox
1 document.all オブジェクトが存在する document.all オブジェクトは存在しない
2 イベントオブジェクト event
イベント発生元エレメントは event.srcElement
イベントオブジェクト event
イベント発生元エレメントは event.target
3 エレメント element の内部の文字列は element.innerText エレメント element の内部の文字列は element.textContent
4 イベントハンドラに指定する関数に引数として event を明示的に渡さなくても
(たとえば onclick=”func()” と書いても)
関数からは外部オブジェクトとして event を参照できる.
イベントハンドラに指定する関数に引数として event を明示的に渡さないと
(たとえば onclick=”func(event)” と書かないと)
関数からは event オブジェクトを参照できない.

2, 3 のコードの場合分けは 1 を使って

if (document.all)
    event.srcElement.innerText = text;
else
    event.target.textContent = text;

のように書く.
4 については, Firefox 側にあわせていつでも明示的に渡すようにする.
Chrome や Opera はどちらでも動くようになってるらしいです.
Safari はどうかしら…

Copyright © 2010 Yoshinori Kohyama All Rights Reserved.