javascript - 对 HTML 实体代码和原始代码之间的区别感到困惑

标签 javascript html

代码(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实体代码),但结果不同,任何人都可以解释一下吗?

最佳答案

它们不一样。 <是实际的<字符,在 HTML 中是标签的开头。 &lt;是我们用于 < 的 HTML 命名字符实体当我们想要真正拥有 < 时在文本中,否则我们无法这样做,因为......它开始一个标签。

所以<script>script 的开头标签,而 &lt;script&gt;就是我们如何放置字符 < , s , c , r , i , p , t , >在 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> .

关于javascript - 对 HTML 实体代码和原始代码之间的区别感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37528221/

相关文章:

javascript - jquery 无法在 .append 内容中工作

java - 使用 Java 从 javascript 链接获取 html 更改

html - 复选框在任何浏览器中都不可见

javascript - 如何创建仅匹配 1 或 2 的正则表达式

JavaScript 导航到命名的超链接

javascript - 使用纯 javascript 从 div 获取边框宽度

javascript - Azure 移动服务 javascript SDK 在 Firefox 中不起作用

javascript - Mongoose 或 Query 不返回任何内容

javascript - 当所有 child 都被解雇时移除容器

javascript - Jquery SlideDown 偶尔工作