JSON.parse()在控制台中运行良好,但不在HTML内部

cip*_*her 4 javascript json

请考虑以下代码:

JSON.parse('{"html":{"lang":"en"},"head":"\\n\\t<meta charset=\\"UTF-8\\">\\n\\t<title>Check ScreenShare</title>\\n\\t<link rel=\\"stylesheet\\" href=\\"main.css\\">\\n\\t<script src=\\"main.js\\"></script>\\n","body":"\\n\\t<h1>This is just a test</h1>\\n\\t<p>This is a great thing to do. This is very good.</p>\\n\\n\\n<script src=\\"sendContent.js\\"></script>"}');
Run Code Online (Sandbox Code Playgroud)

这在开发人员控制台(firefox)中运行良好,但是当我将其包含在html文件中时,firefox会显示错误

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Check others</title>
</head>
<body>
    <!-- <iframe src="" frameborder="0" id="all"></iframe> -->
</body>
<script type="text/javascript">
    //var ifrm = document.getElementById('all');
    JSON.parse('{"html":{"lang":"en"},"head":"\\n\\t<meta charset=\\"UTF-8\\">\\n\\t<title>Check ScreenShare</title>\\n\\t<link rel=\\"stylesheet\\" href=\\"main.css\\">\\n\\t<script src=\\"main.js\\"></script>\\n","body":"\\n\\t<h1>This is just a test</h1>\\n\\t<p>This is a great thing to do. This is very good.</p>\\n\\n\\n<script src=\\"sendContent.js\\"></script>"}');
    //var obj = JSON.parse(JSONstr);
    console.log(obj);
</script> 
</html>
Run Code Online (Sandbox Code Playgroud)

错误是:

SyntaxError: unterminated string literal
Run Code Online (Sandbox Code Playgroud)

任何有想法如何让它工作的人?

Poi*_*nty 5

您不能将字符串嵌入</script>脚本块中,因为它会结束脚本块.HTML解析器不知道JavaScript语法,因此它不会关注引号.

<\/script>改用.

我会进一步建议你研究一个模板系统,因为在字符串中嵌入所有标记非常麻烦且容易出错.