对于同一主题的other questions,我觉得我理解将<script>标记连接为javascript字符串中的'<scr'+'ipt..'的明显理由,即使这本身就是misguided。
但是,查看Instapaper bookmarklet的代码时,我看到了d.createElement('scr' + 'ipt')。代码的相关部分(美化)在问题的末尾。
即使这个(反)模式是为了避免在javascript字符串中出现结束<script>标记后HTML解析器在标记时停止,我在这里看到的理由甚至更少,因为连接的文本甚至不代表<script>标记。
在这种情况下,这样做是出于其他原因吗?
javascript: function iprl5() {
var d = document,
z = d.createElement('scr' + 'ipt'), //???
b = d.body,
l = d.location;发布于 2012-02-18 07:26:34
转义"<script>"是愚蠢的,因为它不会被解析为脚本块中的标签*,将"script"视为特殊更愚蠢。事实并非如此。它既没有<也没有</,如果没有它们,它在任何上下文中都不会被解析为标记。因此,f("script")和f("scr"+"ipt")具有相同的语义。
从技术上讲,在HTML语言中,脚本块中的所有</都需要防范,但实际上浏览器只关心</script>。正因为如此,我推荐使用"<"+"/script>",但这只适用于结束标记。也就是说,"<script>" (或"script",视情况而定)在脚本块中是完全有效的。
祝你编码愉快。
*通过兼容的HTML解析器:然而,手滚(regex)解析可能会以可怕的方式爆炸。XML/XHTML规则是不同的,但是需要对<进行编码,以使其格式良好……也许是CDATA的一些晦涩难懂?在任何情况下,它都与HTML无关。
此外,链接的答案并不支持"<scr"+"ipt.." (或像"scr"+"ipt"这样的子集):相反,它们支持防范以</开头的结束脚本标记结构,该结构甚至不存在于post的代码中……
发布于 2012-02-18 07:26:06
不是的。
我认为。
我想这是由一个被'</script>'烧伤的人做的,他太保护自己了。
https://stackoverflow.com/questions/9336847
复制相似问题