風柳メモ

ソフトウェア・プログラミング関連の覚書が中心。

document.createElementを変数に代入して使用する場合のブラウザ毎の振る舞いの違い

常識なのかも知れないけれど……覚え書きとして。

var c=document.createElement;

としたとき、

/*【1】*/ var link=c('a');

/*【2】*/ var link=c.call(document,'a');

のどちらの呼び出し方を受け付けるか、という話。

javascript:(function(c,n,e){try{c('a');n+=1}catch(e){}try{c.call(document,'a');n+=2}catch(e){}alert(n.toString(2)+'B')})(document.createElement,0)

のようなブックマークレットを手元のブラウザで実行して試してみたところ、次のような結果に。

ブラウザ【2】【1】
IE6(IE7も多分)×
IE8
Firefox 3.6.16×
Google Chrome 10.0.648.205×
Opera 11.10×
Safari 5.0.4×

関連