如何在JavaScript变量中存放两个<script>标签并避免解析报错
问题原因
浏览器解析HTML中的<script>标签时,优先级高于JavaScript语法解析:只要遇到</script>字符串,无论该字符串是否处于JavaScript的引号包裹范围内,都会被判定为当前<script>块的结束标记。
你直接将包含</script>的文本文件内容拼接进JS字符串的写法,会让浏览器提前截断脚本块,导致字符串未闭合、后续代码失效、第二个<script>标签被识别为普通HTML节点等错误。
另外你给出的代码还存在变量名不匹配的问题:声明的变量名为contents,赋值给innerHTML时用的是未定义的htmlCode,也会触发报错。
解决方法
最稳妥的方案是通过PHP的json_encode函数处理读取的文本内容,该函数会自动转义所有特殊字符(包括将/转义为\/,避免</script>被浏览器识别为闭标签),输出的结果本身就是合法的JS字符串格式,不需要额外手动加引号。
修正后的代码如下:
var contents = <?php echo json_encode(file_get_contents('abc/test.txt')); ?>; document.getElementById('replace_contents').innerHTML = contents;
如果不想使用json_encode,也可以手动替换特殊字符串:在PHP输出内容时,将</script>替换为<\/script>,同时转义字符串中的单引号,避免破坏JS字符串的语法结构,但该方案容易遗漏特殊字符,更推荐使用json_encode的方案。
内容的提问来源于stack exchange,提问作者chandana Gowda
相关产品推荐
相关产品推荐

