4

为什么我越来越...

SyntaxError:未终止的字符串文字

...在Firefox和...

未捕获的 SyntaxError:无效或意外的令牌

...当我运行时在Chrome中...

$(document).ready(function () {
  function addJSBeforeEndBody(code) {
       $('body').append('<script>' + code + '</script>');
  }
  addJSBeforeEndBody('$(document).ready(function() { console.log("I never end up here."); });');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

4

2 回答 2

10

分解字符串"</script>"(在 javascript 代码中);它将被解释为实际的结束脚本标记,而不是您想要的字符串文字。

$(document).ready(function () {
  function addJSBeforeEndBody(code) {
       $('body').append('<script>' + code + '</scr' + 'ipt>');
  }
  addJSBeforeEndBody('$(document).ready(function() { console.log("It works now."); });');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

于 2012-04-14T14:58:56.543 回答
2
'<script>'+code.toString()+'<\/script>'

浏览器在看到 时关闭脚本元素'</script>',表示脚本关闭标记。转义斜线使浏览器处于文本解释模式。

或如前所述将其分解:

"<script>"+code.toString()+"<"+"/script>"
于 2012-04-14T15:16:02.350 回答