用javascript替换

时间:2012-12-01 04:42:03

标签: javascript jquery

  

可能重复:
  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>") ;

但在控制台中,错误表示意外的令牌:ILLEGAL

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我猜这是内联JavaScript,在这种情况下,您需要分解结束</script>标记。我也让它更具可读性:

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

这样做的原因是浏览器不认为字符串中的</script>是脚本块的结尾。例如:

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

您的浏览器会看到:

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

换句话说,您的浏览器认为脚本在第一次看到</script>时结束。你可以通过将假的</script>分解成碎片来解决这个问题。

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

答案 1 :(得分:0)

在呈现DOM后,将脚本标记附加到DOM将不会自动加载脚本。

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