2013年2月19日火曜日

Internet ExplorerでJavaScriptの動的実行

最近、IEとそれ以外のブラウザとで、それぞれJavaScriptを動的に実行する必要があったのでメモ。

IE以外のブラウザ。

<script type="text/javascript">
var testScript = document.createElement("script");
var scriptText = document.createTextNode("alert('Hello!');");
testScript.appendChild(scriptText);
document.body.appendChild(testScript);
</script>
Internet Explorerの場合はこちら。

<div id="test" style="display: none;"></div>
<script type="text/javascript">
document.getElementById("test").innerHTML = "&nbsp;<script type='text¥/javascript' defer='defer'>alert('Hello!');<¥/script>";
</script>
上記プログラムで実行できます。
ポイントは下記の2点です。
  • innerHTMLに設定している先頭の&nbsp;
  • scriptタグのプロパティに設定しているdefer属性

defer属性については、Microsoftのサイトに記載してあります。

innerHTML property (Internet Explorer)

When using innerHTML to insert script, you must include the defer attribute in the script element.

最後に、以下のサイトが参考になりました。ありがとうございました。

JavaScriptによって動的に script要素を追加する場合のブラウザごとの挙動の違い

[JavaScript][DOM]innerHTMLでscriptする

あと、今回の感想としては、Operaは素晴らしいということでした。

0 件のコメント:

コメントを投稿