我一直在尝试使用javascript中的一些技巧并遇到一个荒谬的问题:我不能将<script>
用作javascript字符串中的子字符串!这是一个例子:
<html>
<head>
<script>
alert("<script></script>");
</script>
</head>
</html>
它应打印 <script></script>
,但相反,我明白了:
");
以HTML格式打印在页面上。
问题: 如何在Javascript中的字符串中使用<script>
后跟</script>
子字符串,为什么它表现为方式是什么?
以下是JSFiddle:)
答案 0 :(得分:25)
绊倒你的是</script>
。 HTML解析器无法识别Javascript字符串或嵌套的<script>
标记,因此它将其解释为初始<script>
的结束标记。也就是说,文档的这一部分被解析为:
<script> (open tag)
alert("<script> (text node - contents of the script)
</script> (close tag)
"); (text node - plain text)
第二个</script>
会被忽略,因为它没有其他<script>
标记可以关闭。
要解决此问题,请分解</script
以便HTML解析器不会看到它。例如:
alert("<script><\/script>");
或:
alert("<script><" + "/script>");
或者只是将代码放在外部Javascript文件中。此问题仅适用于内联脚本。
答案 1 :(得分:1)
这是因为我相信\
。我没有具体的解释,因为我是Javascript的新手,但这段代码应该有效:
alert("<script><\/script>");
使用Java知识来实现它。哈哈,因为\
是许多语言的转义键。