javascript - javascript书签代码中 'scr' +'ipt'的串联

标签 javascript

给定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/

相关文章:

浏览器的 JavaScript 评估时间

javascript - Cordova 2.9、3.0 没有 console.log

javascript - 如何在 Luxon 中使用 diff 方法

javascript - 将 Javascript 和 CSS 组合成 HTML 文件

php - 流体/液体布局 - 多列,两侧都有填充/边距

javascript - 当我在代码中使用样式化类时,为什么 javascript 代码不起作用?

javascript - 在 Javascript PhoneGap 中一次又一次显示相同的结果

javascript - 附加 Jquery.min.js 时发生 Jquery 冲突

javascript - 数据表标题高度不断增加

javascript - 有什么方法可以使用一段 JavaScript 在两个字符串之间切换?