如何把""在一个javascript字符串?

时间:2015-02-01 04:13:44

标签: javascript html string

我一直在尝试使用javascript中的一些技巧并遇到一个荒谬的问题:我不能将<script>用作javascript字符串中的子字符串!这是一个例子:

<html>
    <head>
        <script>
            alert("<script></script>");
        </script>
    </head>
</html>

它应打印 <script></script> ,但相反,我明白了:

");

以HTML格式打印在页面上。

问题: 如何在Javascript中的字符串中使用<script>后跟</script>子字符串,为什么它表现为方式是什么?

以下是JSFiddle:)

2 个答案:

答案 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知识来实现​​它。哈哈,因为\是许多语言的转义键。