script要素のtextプロパティ

の中で記述されているscript要素にinnerHTML突っ込んでもうまく作動しない件。僕のIE6でもできないのでMSの月例更新で仕様変更になったのかと勝手に想像しています。ただその代替手段として...以下のようにtextプロパティを利用できます。既存のscript要素にtext設定しただけでalertされます。…これってXMLHttpRequestした後にeval必要ないですね。

<script id="foo"></script>
<script>
foo.text = "alert(1)";
foo.text = "alert(2)";
</script>

innerHTMLはMSIEの独自仕様で他ブラウザが真似しているのでMSIEが勝手に仕様変更してもいいんですがscriptのtextプロパティはDOMLevel1で勧告されているのでこの部分は勝手に仕様変更できないと思います。

その結果、IE7では、script、embed、objectなどの特定のDOMエレメントに対して、innerHTMLに値を設定しようとするとエラーになるようです。 (出展:http://rails.office.drecom.jp/takiuchi/archive/100)

MSDNを参照したところembedタグとobjectタグにはinnerHTMLプロパティは確認できませんでした。今まで変更できていたとしたら今までのがバグってことなのかな。ただscriptタグにはinnerHTMLがあるので読取専用ということも書かれていないので仕様変更なんでしょうか。

textプロパティのあるDOM要素

SCRIPT, TITLE, COMMENT, HTML Comment(MSDN調べ)

読取専用のinnerHTML要素

COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR.(MSDN調べ)