JavaScript課題対応で発見したTips2

動的にscript要素を作成、編集するパターンおよびブラウザ間の挙動の違いをメモしておく。
大まかには以下の認識でよいだろう。(※例外ケースは、後述の詳細で赤文字で記載している)

  • textよりもsrcが優先される
  • IE8以前はDOMにアペンド後のscript要素の操作でもJavaScriptが実行されていたが、FFやIE9以降では実行されくなっている

以下、詳細を記述する。

検証コード:

【main.html】
window.onload = function() {
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.text = 'alert("fromText");';
//	script.src = './test.js';
	var head = document.getElementsByTagName('head')[0];
	head.appendChild(script);
	
//	script.text = 'alert("fromText");';
	script.src = './fromSrc.js';
}
【fromSrc.js】
alert('fromSrc');

DOMにアペンド→srcを設定

IE7, IE8, IE9, FF5: 「fromSrc」

DOMにアペンド→textを設定

IE7, IE8, IE9, FF5: 「fromText」

srcを設定→DOMにアペンド

IE7, IE8, IE9, FF5: 「fromSrc」

textを設定→DOMにアペンド

IE7, IE8, IE9, FF5: 「fromText」

srcを設定→textを設定→DOMにアペンド

IE7, IE8, IE9, FF5: 「fromSrc」

textを設定→srcを設定→DOMにアペンド

IE7, IE8, FF5: 「fromSrc」
IE9: なし

textを設定→DOMにアペンド→textを設定

IE7, IE8: 「fromText」「fromText」
IE9, FF5: 「fromText」

textを設定→DOMにアペンド→srcを設定

IE7, IE8: 「fromText」「fromSrc」
IE9, FF5: 「fromText」

srcを設定→DOMにアペンド→textを設定

IE7, IE8: 「fromSrc」「fromSrc」
IE9, FF5: 「fromSrc」

srcを設定→DOMにアペンド→srcを設定

IE7, IE8: 「fromSrc」「fromSrc」
IE9, FF5: 「fromSrc」