在 JavaScript 中准确取消转义 HTML 实体

Accurately unescape HTML entities in javascript

本文关键字:转义 HTML 实体 取消 JavaScript      更新时间:2023-09-26

在javascript中,我需要获取一个字符串和HTML取消转义。

这里的这个问题提出了同样的问题,最流行的答案涉及填充临时div。

我也用过这个,但我想我发现了一个错误。

简单的例子,正确的行为

如果您有此字符串:猫>狗

未逃脱,应该是:猫>狗

格式错误的示例,错误的行为

如果你去掉分号并改用这个:猫>狗

结果你会得到这个: 猫>狗

难道没有错吗?

这让我觉得很奇怪。据我了解,转义字符串需要存在终止分号,否则不会转义。毕竟,如果我有一家名为吉他和乐队的商店呢?据我们所知,这家公司存在但没有业务,因为它在有记录的任何地方都会导致空引用异常。

关于如何在分号丢失时故意避免逃逸的同时执行转义的任何想法?目前,我能想到的就是自己执行逃脱。

(顺便说一下,StackOverflow 中的所见即所得预览表现出类似的异常行为。尝试输入 &,这将呈现为 >

难道没有错吗?

成功的 HTML 解析器是宽容的。这是将它们与XML解析器区分开来的原因之一。他们不一定遵守关于标记的严格规则,原因很简单,那里有很多不正确的标记。因此,他们试图弄清楚标记的含义。 &gtDogs 更可能意味着>Dogs而不是&gtDogs,所以这就是解析器所采用的。