首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript bookmarklet代码中'scr'+'ipt‘的串联

javascript bookmarklet代码中'scr'+'ipt‘的串联
EN

Stack Overflow用户
提问于 2012-02-18 07:21:53
回答 2查看 529关注 0票数 6

对于同一主题的other questions,我觉得我理解将<script>标记连接为javascript字符串中的'<scr'+'ipt..'的明显理由,即使这本身就是misguided

但是,查看Instapaper bookmarklet的代码时,我看到了d.createElement('scr' + 'ipt')。代码的相关部分(美化)在问题的末尾。

即使这个(反)模式是为了避免在javascript字符串中出现结束<script>标记后HTML解析器在标记时停止,我在这里看到的理由甚至更少,因为连接的文本甚至不代表<script>标记。

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

代码语言:javascript
复制
javascript: function iprl5() {
    var d = document,
        z = d.createElement('scr' + 'ipt'),  //???
        b = d.body,
        l = d.location;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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的代码中……

票数 5
EN

Stack Overflow用户

发布于 2012-02-18 07:26:06

不是的。

我认为。

我想这是由一个被'</script>'烧伤的人做的,他太保护自己了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9336847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档