【问题标题】:unterminated string literal / Invalid or unexpected token未终止的字符串文字/无效或意外的标记
【发布时间】:2012-04-26 15:00:29
【问题描述】:

为什么我会……

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."); });');
});
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【问题讨论】:

标签: javascript


【解决方案1】:

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

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

【讨论】:

  • 啊,我记得那个问题。好电话!
  • 是的,它在 html 文件中。拆分“脚本”一词是什么意思?
  • @Erik 我就是这个意思;您不能在 HTML 文件中包含文字 "&lt;/script&gt;" ,除非它是实际的文字标签。使用"&lt;/scr" + "ipt&gt;""&lt;\/script&gt;" 或任何不是"&lt;/script&gt;" 的东西。
【解决方案2】:
'<script>'+code.toString()+'<\/script>'

浏览器在看到'&lt;/script&gt;'时关闭脚本元素,表示脚本关闭标签。转义斜线会使浏览器处于文本解释模式。

或如前所述将其分解:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2018-04-04
    • 1970-01-01
    • 2011-11-03
    • 2013-10-16
    • 2014-06-09
    • 2014-06-14
    相关资源
    最近更新 更多