准确地在javascript中取消HTML实体

时间:2013-11-08 22:34:51

标签: javascript html escaping

在javascript中,我需要取一个字符串,HTML取消它。

This question over here问同样的问题,最流行的答案是填充一个临时div。

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

简单示例,正确行为

如果你有这个字符串: Cats& gt; Dogs

未转义,应该是: Cats> Dogs

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

如果你 删除分号 并改为使用它: Cats& gtDogs

您将得到这样的结果: Cats> Dogs

没错?

这让我很奇怪。根据我的理解,转义字符串需要存在终止分号,否则它不会被转义。毕竟,如果我有一家名为吉他和放大器的商店怎么办?据我们所知,这家公司虽然存在但没有业务,因为它会在有记录的地方引起空引用异常。

关于如何在分号丢失时明知避免转义时如何执行转义的任何想法?目前,我所能想到的就是自己进行无懈可击。

(顺便说一句,StackOverflow中的WYSIWYG预览表现出类似的异常行为。尝试输入&amp; ampgt; ,这将呈现为&amp; gt; !)< / p>

1 个答案:

答案 0 :(得分:2)

  

这不是错吗?

成功的HTML解析器容忍。这是区别于XML解析器的事情之一。他们并不一定遵守关于标记的严格规则,原因很简单,那里有很多不正确的标记。因此,他们试图找出标记意味着什么来代表什么。 &gtDogs更有可能意味着>Dogs而不是&gtDogs,所以这就是解析器的用途。