混淆了HTML实体代码和原始代码之间的区别

Sayakiss

代码(jsFiddle):

<script>
function f(input) {
    return '<article>' + input + '</article>';
}     
document.write(f('<script>alert(1)<\/script>')); //alert 1
document.write(f('&lt;script&gt;alert(1)&lt;\/script&gt')); // write normal text
</script>

在我的想法中,<script>alert(1)<\/script>它与&lt;script&gt;alert(1)&lt;\/script&gt(原始实体代码与http实体代码)相同,但是其结果不同,有人可以对此进行解释吗?

TJ人群

他们不一样。<是实际<字符,在HTML中是标记的开头。&lt;<我们要<在文本中实际包含时使用的HTML命名字符实体,否则我们无法做这件事,因为...它开始了一个标记。

所以,<script>是的开始script标记,而&lt;script&gt;就是我们如何把人物<script>在HTML。

忘了document.writescript标签,只看一下HTML本身:

这:

<div>Testing 1 2 3</div>

...是div包含文本元素的标记Testing 1 2 3

相反,

&lt;div>Testing 1 2 3&lt;/div>

...是<字符(作为文本)的标记,div>Testing 1 2 3后跟另一个<字符(作为文本)的标记,然后是/div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章