1. ホーム
  2. ジャバスクリプト

[解決済み】innerHTMLでスクリプトを挿入することは可能ですか?

2022-04-04 14:28:04

質問

を使用して、いくつかのスクリプトをページに読み込もうとしました。 innerHTML の上に <div> . スクリプトは DOM に読み込まれるようですが、実行されることはありません (少なくとも Firefox と Chrome では)。で挿入したときにスクリプトが実行されるようにする方法はありますか? innerHTML ?

サンプルコードです。

<!DOCTYPE html>
<html>
  <body onload="document.getElementById('loader').innerHTML = '<script>alert(\'hi\')<\/script>'">
    Shouldn't an alert saying 'hi' appear?
    <div id="loader"></div>
  </body>
</html>

解決方法は?

を使用する必要があります。 eval() は、DOMテキストとして挿入したスクリプトコードを実行するために使用します。

MooTools は自動的にこれを行いますし、jQuery も同様でしょう (バージョンによりますが、jQuery バージョン 1.6 以上では、以下のようになります。 eval ). これによって <script> タグを使ったり、コンテンツをエスケープしたり、他にもいろいろなことができます。

一般的に、もしあなたが eval() のようなHTMLマークアップを行わずにスクリプトコードを作成/送信したい場合。 <script> というのは、これらは eval() を適切に実行します。