代码(jsFiddle):
<script>
function f(input) {
return '<article>' + input + '</article>';
}
document.write(f('<script>alert(1)<\/script>')); //alert 1
document.write(f('<script>alert(1)<\/script>')); // write normal text
</script>
在我的想法中,<script>alert(1)<\/script>
它与<script>alert(1)<\/script>
(原始实体代码与http实体代码)相同,但是其结果不同,有人可以对此进行解释吗?
他们不一样。<
是实际<
字符,在HTML中是标记的开头。<
是<
我们要<
在文本中实际包含时使用的HTML命名字符实体,否则我们无法做这件事,因为...它开始了一个标记。
所以,<script>
是的开始script
标记,而<script>
就是我们如何把人物<
,s
,c
,r
,i
,p
,t
,>
在HTML。
忘了document.write
和script
标签,只看一下HTML本身:
这:
<div>Testing 1 2 3</div>
...是div
包含文本的元素的标记Testing 1 2 3
。
相反,这:
<div>Testing 1 2 3</div>
...是<
字符(作为文本)的标记,div>Testing 1 2 3
后跟另一个<
字符(作为文本)的标记,然后是/div>
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句