将<script>附加到body?</script>后立即生效

时间:2012-03-23 15:10:41

标签: javascript ajax append

这就是我的......

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

alert(1)没有被执行。

@rocket @ m90我知道,但我不能使用那种方法,因为我有很多其他标签。基本上,我从ajax获取一个网页,剥离头标签,并将其嵌入到文档中。现在ajax数据也有一些我想要执行的脚本标签......

3 个答案:

答案 0 :(得分:2)

您还需要创建脚本元素:

var a = document.createElement('div'),
    b = document.createElement('script');
b.textContent = 'alert(1)';
a.appendChild(b);
document.body.appendChild(a);

答案 1 :(得分:2)

您不应在<script>内使用.innerHTML标记。相反,您可以创建一个新的script元素,并按照以下方式执行:

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

答案 2 :(得分:1)

只要脚本中有"</script>",JavaScript解释器就会将此视为脚本块的结尾。即使引用它。

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