2009-08-02 7 views

答えて

2

なし。 innerHTMLはスクリプト要素を実行しません(defer属性を持っていない限り、それは普遍的ではないと思います)。

私は以下のテストを行っていませんが、DOMとJSをサポートしているブラウザの間で普遍的にサポートされている必要があります。

var script = "alert(1)"; 
var script_node = document.createTextNode(script); 
var script_element = document.createElement('script'); 
script_element.type = "text/javascript"; 
script_element.appendChild(script_node); 
document.body.appendChild(script_element); 
-1

はダビデは動作しないでしょう.innerHTMLを使用して、指摘したように。

ほとんどの人がDOMに追加するといいと思いますが、この方法はSafari 2.0では動作しません。

最善の方法、scriptaculousに使用されるもの、document.write()を使用することです:

// inserting via DOM fails in Safari 2.0, so brute force approach 
document.write('<script type="text/javascript">alert("hi");<\/script>'); 
+2

document.writeは完全なDOMを持つページでは機能しません(通常はinnerHTMLについて考えるようになります)。Safari 2の市場シェアは非常に小さいです。 Windowsシステム(IE6の遺産を残し続けている)以上にアップグレードされる傾向のあるプラットフォームでは、安定版の後ろに2つのバージョンがあります。 – Quentin

-1

innerHTMLプロパティを経由してスクリプトを追加すると、私の知っている任意のブラウザでは動作しません。 domを介してスクリプトノードを追加することは、IEでは機能しません。ページに挿入するスクリプトタグを含むhtml文字列がある場合は、スクリプトタグのコンテンツを抽出してそれを評価するのが最善の方法です。プロトタイプライブラリには、これを正確に行う便利な機能(htmlやevalスクリプトなどを挿入するための他の関数と同様に)が便利なevalScriptsという機能があります。

関連する問題