【问题标题】:Replace with javascript [duplicate]用javascript替换[重复]
【发布时间】:2012-12-01 04:42:03
【问题描述】:

可能重复:
jQuery: Can’t append <script> element

我正在尝试通过这样做用 javascript 替换 div:

$("#frame").replaceWith("<script language='JavaScript' type='text/javascript'>AC_VHost_Embed(2672266,206,206,'',1,1, 2279587, 0,1,0,'912832a3e8b02d79380c8352f2d497f6',9);</script>") ;

但在控制台中,错误提示 Unexpected token: ILLEGAL

有什么想法吗?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

我猜这是内联的 JavaScript,在这种情况下,您需要拆分结束 &lt;/script&gt; 标记。我还让它更具可读性:

$("#frame").replaceWith(
    "<script language='JavaScript' type='text/javascript'>"
    + "AC_VHost_Embed(2672266,206,206,'',1,1, 2279587, "
    + "0,1,0,'912832a3e8b02d79380c8352f2d497f6',9);"
    + "<" + "/script>"
);

这样做的原因是浏览器不会认为字符串中的&lt;/script&gt; 是脚本块的结尾。示例:

<script>
    // Doesn't work!
    alert('</script>');
</script>

您的浏览器看到:

<script>
    // Doesn't work!
    alert('
</script>
');
</script>

换句话说,您的浏览器认为脚本在它第一次看到&lt;/script&gt; 时就结束了。您可以通过将伪造的 &lt;/script&gt; 分解成碎片来解决此问题。

<script>
    // Works fine!
    alert('<' + '/script>');
</script>

【讨论】:

    【解决方案2】:

    在渲染后将脚本标签附加到DOM不会自动加载脚本。

    看看这个 jQuery 函数来加载脚本:http://api.jquery.com/jQuery.getScript/

    【讨论】:

    • 哦,你是对的。无论哪种方式,getScript 都值得了解。
    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2013-10-30
    • 2015-10-11
    • 1970-01-01
    • 2012-12-13
    • 2012-07-23
    相关资源
    最近更新 更多