【问题标题】:why escaping / in javascript '<\/script>'?为什么在 javascript '<\/script>' 中转义 /?
【发布时间】:2011-03-29 17:18:16
【问题描述】:

我看到每个人都这样做,但我不明白为什么。

document.write('<script src="src"><\/script>');

我的意思是使用单个 ' 你不需要转义字符?

【问题讨论】:

标签: javascript


【解决方案1】:
  1. 单引号和双引号字符串具有相同的转义规则。
  2. 它可以防止&lt;/script&gt; 被解析为结束标记。

"&lt;/script&gt; 和 "&lt;\/script&gt;" 与 JavaScript 相同,但只有第一个被 HTML 解析器解释为包含 HTML 结束标记.

【讨论】:

    【解决方案2】:

    HTML 解析器会将您的字符串中的&lt;/script&gt; 视为结束标记并关闭您的初始&lt;script&gt;。它没有字符串的概念。

    因此,如果您不对其进行转义,您的 JavaScript 将仅被视为 document.write('&lt;script src="src"&gt;,其余部分,'); 将被视为 HTML 文本节点。

    另外,请注意,您不必以特定方式“转义”&lt;/script&gt;。只要你写的不像&lt;/script&gt;,什么都可以。一些有效的例子:

    document.write('<script src="src"><\/script>');
    document.write('<script src="src"></scr' + 'ipt>');
    document.write('<script src="src"></' + 'script>');
    

    【讨论】:

      【解决方案3】:

      &lt;/script&gt; 总是结束一个脚本块——不管你做什么(例如 HTML cmets 或 CDATA)。所以它决不能出现在脚本块中,除非你真的想结束这个块,最简单的方法是转义正斜杠(转义不做任何事情;在 JavaScript 中,未知的转义序列只是“丢失”它们的反斜杠)。

      【讨论】:

      • 我不明白。考虑到单引号中的 javascript 转义,&lt;/script&gt;&lt;\/script&gt; 不是相同的值吗?他们不应该产生相同的“错误”
      • 是的,但它不仅更长(3 个字符而不是 1 个字符)而且看起来更丑(IMO)。
      • @是的,是的,我以前见过这种风格。
      • @是的,请不要编辑您的评论以说出完全不同的内容。只需发布一个新的。
      猜你喜欢
      • 1970-01-01
      • 2018-07-18
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 2014-11-02
      相关资源
      最近更新 更多