HTML5 + JS Escapers


8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

HTML5在解析标签<script>时可能会出现以下三种数据状态:

  • script data escaped dash dash state;
  • script data escaped state;
  • script data double escaped state.

其中处于escaped state与double escaped state的状态会被当做js语句执行。 具体到标签中:

<script type = "text/javascript">  
    <!-- script data escaped dash dash state 
        this is script data escaped state
        <script> this is script data double escaped state
        </script>
        this is script data escaped state
    -->
< /script>

HTML5解析器在<script></script>标签中解析到<!--时候,会进入到dash dash escaped state,哪怕是<!--出现在js的字符串中,如下

<script>
    if(console.log("<!--var a;<script>")</script>/)
        alert("script data state");
    else
        alert("script data state too");
        -->
</script>

上述代码的运行结果为: 控制台输出<!--var a;<script> 弹窗弹出 script data state too 不会出现js错误信息。

说明: <!--触发的状态会持续到遇到>为止,上面的代码如果不加<script>,那么<!--就会因为遇到</script>中的>而结束。 如果不加-->那么js会运行到HTML5文档的最末尾EOF结束,从而导致解析错误。