未终止的字符串文本/无效或意外的令牌

unterminated string literal / Invalid or unexpected token

本文关键字:意外 无效 令牌 文本 终止 字符串      更新时间:2023-09-26

为什么我会得到...

语法错误:未终止的字符串文本

。在火狐和...

未捕获的语法错误:无效或意外的令牌

。当我运行时在 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>

分解字符串"</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>

'<script>'+code.toString()+'<'/script>'

浏览器在看到 '</script>' 时关闭脚本元素,指示脚本关闭标记。转义斜杠可使浏览器保持文本解释模式。

或者如前所述将其分解:

"<script>"+code.toString()+"<"+"/script>"