首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编写双重转义状态脚本

编写双重转义状态脚本
EN

Stack Overflow用户
提问于 2014-05-19 05:26:43
回答 2查看 749关注 0票数 2

我正在探索HTML5标记器,并对double escape state感到好奇。您可以使用以下命令跳转到此状态:

代码语言:javascript
复制
<script>
<!--<script>script data double escaped</script>-->
</script>

仅供参考,还有(单个)转义状态:

代码语言:javascript
复制
<script>
<!--script data escaped-->
</script>

我还没能找到/计算出单转义和双转义的区别和它的用途吗?此外,在文档的标记化部分中,我没有看到任何使用"\"字符来转义脚本标记的用法:<\/script>。我是否遗漏了什么,或者我只是累了;)单/双脚本状态是什么?

编辑

转义脚本标记(<\/script>)由javascript解析器处理,与HTML解析器没有任何关系。所以..。单/双状态背后的故事是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-19 05:58:35

<\/script>中的\由8.2.4.17脚本数据小于符号状态规则中的“任何其他”条件处理。随后,由JS解析器对其进行处理。

至于双重转义状态,我想您已经确定它会导致</script>字符串无法解析为结束脚本标记。这样做的目的可能是迷失在时间的迷雾中。HTML5解析器规则被编写为与真实世界的web内容向后兼容。如果过去的浏览器出于任何原因(甚至作为bug)这样做,并且如果网站开始依赖于这种行为,那么为了允许现代浏览器处理这些网页,双重转义状态处理将需要包括在解析器规则中。

票数 1
EN

Stack Overflow用户

发布于 2018-09-04 07:40:25

当Javascript首次引入时,许多浏览器都不支持它。因此,它们将呈现脚本标记的内容- javascript代码本身。解决这个问题的正常方法是将脚本放入注释中--例如

代码语言:javascript
复制
<script>
  <!--    //hide from non-JS browsers
  function doSomething() {
    var coolScript = "<script>" + theCodeICopied + "</script>";
    document.write(coolScript);
  }
  // And if you forget to close your comment here, things go funnny
  -->
</script>

是相对正常的。因此,像这样在注释中编写的脚本可以将脚本标记作为文字字符串写入文档中间。这在今天看起来可能不是很好的风格,但是很久以前也没有太多的DOM。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23727025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档