javascript书签代码中'scr'+'ipt'的连接

Per*_* P. 6 javascript

鉴于关于同一主题的其他问题,我觉得我理解将<script>标记连接'<scr'+'ipt..'在javascript字符串中的明显理由,即使这本身是错误的.

然而,在寻找的代码Instapaper的书签我看d.createElement('scr' + 'ipt').代码的相关部分(美化)在问题的最后.

即使这个(反)模式是为了避免HTML解析器在<script>javascript字符串中发生结束标记之后在标记处徘徊,我可以看到更少的理由这样做,因为连接文本甚至不代表<script>标记.

在这种情况下,这是出于其他原因吗?

javascript: function iprl5() {
    var d = document,
        z = d.createElement('scr' + 'ipt'),  //???
        b = d.body,
        l = d.location;
Run Code Online (Sandbox Code Playgroud)

小智 5

这是愚蠢的逃避"<script>",因为它会不会被解析为一个脚本块*标记内,这是甚至愚蠢到把"script"特殊.不是.它缺少一个<或者</,在没有它的情况下,它永远不会被解析为标记 - 在任何情况下.因此f("script"),f("scr"+"ipt")具有相同的语义.

从技术上讲,在HTML中,所有 </脚本块都需要防范,但实际上浏览器只关心它</script>.因此,"<"+"/script>"我推荐,但这仅适用于结束标签.也就是说,"<script>"(或"script"视情况而定)在脚本块内完全有效.

快乐的编码.


*通过兼容的HTML解析器:然而,手动(正则表达式)解析可能以可怕的方式爆炸.该XML/XHTML的规则是不同的,但随后的<需要被编码为那些被很好地形成的 ......也许有些晦涩与CDATA?无论如何,它与HTML无关.

此外,链接的答案不会争论"<scr"+"ipt.."(或类似的子集"scr"+"ipt"):相反,他们主张防止关闭脚本标签构造,开始于</,甚至不在帖子的代码中...