単純にスクリプト タグを含むものに innerHTML を設定するだけでは十分ではありません。script 要素を作成し、それを DOM に追加する必要があります。コンテンツの塊を大量に挿入する際に、クロスサイト スクリプティングを保護することが意図されていると思います。
var script = document.createElement('script');
script.innerHTML = "alert('ran some JS');";
document.body.appendChild(script);
例: http://jsfiddle.net/axvaT/
document.write
あなたが思うようにはうまくいきません。 document.write
script タグがある場所にテキストを配置しません。代わりに、HTML パーサーが現在見ている場所にテキストを配置します。JS コードがいつ実行されるかによって、これらは同じ場合もあれば、まったく異なる場合もあります。
このため、とりわけ、document.write
何にも使用しないでください。これまで。 デバッグも。
最後に、他の js ファイルを指すスクリプト タグを挿入すると便利な場合もあります。
var script = document.createElement('script');
script.src = 'somefile.js';
document.head.appendChild(script);
JS を含む script タグでこれを行うのは意味がありません。JavaScript を使用して、JavaScript をすぐに実行するスクリプト タグを作成しています。新しいスクリプト タグを作成して実行するのではなく、実行したい JavaScript を実行してみませんか?
だからしないでください:
var script = document.createElement('script');
script.innerHTML = "alert('ran some JS');";
document.body.appendChild(script);
代わりに次のようにします。
alert('ran some JS');