【问题标题】:Making a <script> work as soon as it is appended to body?将 <script> 附加到正文后立即工作?
【发布时间】:2012-04-08 03:47:03
【问题描述】:

这就是我所拥有的……

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

alert(1) 不会被执行。

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

【问题讨论】:

标签: javascript ajax append


【解决方案1】:

只要您的脚本中有"&lt;/script&gt;",JavaScript 解释器就会将此视为脚本块的结尾。即使它被引用了。

使用:a.innerHTML="&lt;script&gt;alert(1)&lt;/sc" + "ript&gt;";

【讨论】:

  • 您说的很对,但即使您有所改进,它仍然无法正确执行。
【解决方案2】:

您还需要创建脚本元素:

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

【讨论】:

    【解决方案3】:

    您不应在.innerHTML 内使用&lt;script&gt; 标签。相反,您可以创建一个新的 script 元素并像这样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 2022-11-30
      • 2020-08-02
      相关资源
      最近更新 更多