【问题标题】:unterminated string literal without breaking the line未终止的字符串文字而不换行
【发布时间】:2014-12-09 17:13:06
【问题描述】:

我收到以下错误:SyntaxError: unterminated string literal. 第一个data += 命令似乎有问题。它有什么问题?我没有断线。

        // Data
        var data = "<!doctype html><html><head>";
        data += "<script type='text/javascript' src='test1.js'></script>";
        data += "</head><body>TEST</body></html>";

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您不能在脚本块中包含字符序列&lt;/script&gt;。 HTML 解析器假定它结束了该块。

    典型的处理方式是这样的

        data += "<script type='text/javascript' src='test1.js'></" + "script>";
    

    HTML 解析器不理解 JavaScript 语法。当它看到&lt;script&gt;时,它只是在后续内容中进行盲搜索,寻找&lt;/script&gt;

    【讨论】:

    • 你是对的,像你描述的那样添加它解决了问题。但是现在解析器会执行 JavaScript,即使它在字符串中,例如data += '&lt;scrip'+'t type="text/javascript"&gt;console.log("Inline");&lt;'+'/script&gt;';。 “内联”会出现在控制台中
    • @user3631654 这就是&lt;script&gt; 标签的工作方式,对吧?当 HTML 解析器解析带有内联内容的 &lt;script&gt; 块时,它会在继续浏览文档之前评估 JavaScript。
    • 但它在字符串中!这是没有意义的。我还拆分了&lt;script&gt;-tag!?
    • 也许你也知道这个问题的解决方案:stackoverflow.com/questions/27411562/…
    猜你喜欢
    • 1970-01-01
    • 2013-10-16
    • 2014-06-09
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多