2012-03-23 5 views
1

これは<script>を体に追加するとすぐに機能しますか?

a= document.createElement('div'); 
a.innerHTML="<script>alert(1)</script>"; 
document.body.appendChild(a); 

alert(1)のdoesntが実行されます...私が持っているものです。

@rocket @ m90私はそれを知っていますが、私は他のタグがたくさんあるのでそのメソッドを使用できません。基本的には、私はajaxからWebページを取得しています。先頭のタグを取り除き、ドキュメントに埋め込みます。今、ajaxデータには実行したいスクリプトタグがいくつかあります...

+1

たぶん、あなたはすでにこれを見て、多分していない:http://stackoverflow.com/questions/889967/jquery-load-call -doesnt-execute-javascript-in-loaded-html-file – m90

答えて

2

あなたは.innerHTMLの内側<script>タグを使用しないでください。代わりに、あなただけの新しいscript要素を作成し、ちょうどこのようにそれを行うことができます。

a = document.createElement('script'); 
a.textContent = "alert('1');" ; 
document.body.appendChild(a); 
1

スクリプトに"</script>"が付いたら、JavaScriptインタプリタはこれをスクリプトブロックの最後とみなします。引用されているにもかかわらず。

用途:a.innerHTML="<script>alert(1)</sc" + "ript>";

+1

あなたはまったく正しいですが、改良を加えても依然として正しく実行されません。 – apsillers

2

あなたもscript要素を作成する必要があります。

var a = document.createElement('div'), 
    b = document.createElement('script'); 
b.textContent = 'alert(1)'; 
a.appendChild(b); 
document.body.appendChild(a); 
関連する問題