1年ちょい前にJavaScriptを勉強し始めた頃にはまったIEのsetAttributeだけど、Internet Explorer8のStandards mode(標準モード)では、他のブラウザと動きが揃っていた。
よって、「IEとそれ以外のブラウザ」といったアバウトな条件で分岐しているようなケースではスクリプトエラーになってしまう。
もしsetAttributeを使ってイベントハンドラを設定することがあったら、document.documentModeを見て、IE8 Standards modeでは、他のブラウザと揃えておく必要がある。
var e = document.getElementById('hoge_link'); if (document.documentMode && document.documentMode >= 8) { //他のブラウザと揃える e.setAttribute('onclick', 'return false;'); } else { //IE8未満, IE8のIE7モード, Quirksモードの時 e.setAttribute('onclick', new Function("return false;")); }
IEも標準仕様を準拠する方向に進んでいるんだなぁと感慨深い反面、どうしてイベントの登録はattachEventに拘り続けるんだろうとか思ったり。
最近のツッコミ
参号館 日記(ariyasacca)
探していたことがここで見つかりました。<br>ありがとうございました。
おー。お役に立てて何よりです。