この1つは私にもちょっとした不快感を与えました。あなたが 'defer'プロパティを含まない限り、IEはinnerHTMLを介してJSを直接挿入することはできません(下の2番目のリンクを参照)。このプロパティはIE固有のもので、他のマークアップがロードされるまでIEがJSの実行を延期することができるようになります。しかし、2つのスクリプトタグを(私のように)インクルードすると、スクリプトが非同期的に読み込まれるように見えるので、どちらが最初に実行されるかは保証されません。あなたのスクリプトが互いに依存している場合(私の場合と同じ)、これは問題になるはずです。
さらに注意が必要です。スクリプトを挿入すると同時にスクリプト以外のマークアップも挿入する必要があります。私はスクリプトタグを 'defer'プロパティの有無にかかわらず挿入することができませんでした。最後に、スクリプトタグは、他のすべての非スクリプトマークアップが挿入された後に配置する必要があります。それ以外の場合、スクリプトタグは挿入されたHTMLから取り除かれます。、コードを介したスクリプトを挿入する
http://msdn.microsoft.com/en-us/library/ms533719%28v=vs.85%29.aspx
例(はい:
MS innerHTMLプロパティリファレンス:
http://msdn.microsoft.com/en-us/library/ms533897%28v=vs.85%29.aspx
MS延期プロパティリファレンス
は、ここではいくつかの参照です実際に動作します):
http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/insertScript_2.htm
私のテストコード:あなたは</script>
div.innerHTML = '<script src="somescript.js"><\/script>';
ためにエスケープ文字を使用する必要が
// I downloaded the MS example file above and tweaked their script a bit,
// resulting in this. Using the proper approach to the defer property
// (namely: defer="defer") did not provide me with consistent results, so
// sticking with 'DEFER' may be necessary.
// Note: Try moving the 'sHTML' variable to the end of the script string.
function insertScript2()
{
var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>";
var sScript = sHTML + "<SCRIPT DEFER type='text/javascript'> function go2(){ alert('Hello from inserted script.') } </SCRIPT" + ">";
ScriptDiv.innerHTML = sScript;
}
(1)良い質問を参照してください。 –