无法动态添加脚本节点

时间:2014-04-24 06:57:28

标签: javascript jquery

我正在尝试使用以下代码附加<script>节点

<html>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
  $('body').append('<script>alert(\'foo\');</script>');
</script>
</body>
</html>

我希望代码

alert('foo');

要添加执行,但实际上,添加了以下字符串

');

这里发生了什么?

2 个答案:

答案 0 :(得分:4)

你必须在这里正确地转义斜杠字符并使用双引号来表示foo:

<html>
  <body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script>
      $('body').append('<script>alert("foo");<\/script>');
    </script>
  </body>
</html>

答案 1 :(得分:3)

您必须在字符串中打破</script>,否则它将被视为<script>的结束标记。

  $('body').append('<script>alert(\'foo\');</scr'+'ipt>');