给定other questions在同一主题上,我觉得我理解连接 <script>
的明显理由。标记为 '<scr'+'ipt..'
在 javascript 字符串中,即使它本身是 misguided .
但是,查看 Instapaper bookmarklet 的代码我看到 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;
最佳答案
逃跑很傻"<script>"
因为它不会被解析为脚本 block 内的标记*,并且甚至更愚蠢对待"script"
作为特别的。不是。它缺少 <
或 </
,没有它,它永远不会被解析为标签——在任何上下文中。因此 f("script")
和 f("scr"+"ipt")
具有相同的语义。
从技术上讲,在 HTML 中,所有 </
在脚本 block 中需要防范,但实际上浏览器只关心 </script>
.正因为如此,"<"+"/script>"
是我推荐的,但这只适用于结束标签。即 "<script>"
(或 "script"
视情况而定)在脚本 block 内完全有效。
快乐编码。
*通过兼容的 HTML 解析器:然而,手动(正则表达式)解析可能会以可怕的方式爆炸。 XML/XHTML 规则不同,但是 <
需要为那些格式良好的无论如何编码......也许CDATA有些晦涩难懂?无论如何,它与 HTML 无关。
此外,链接的答案不支持"<scr"+"ipt.."
(或类似 "scr"+"ipt"
的子集):相反,他们主张防止以 </
开头的关闭 脚本标记构造,那甚至不存在于帖子的代码中......
关于javascript - javascript书签代码中 'scr' +'ipt'的串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9336847/