在 Javascript 中动态修复/修复无效的 HTML

Dynamically Fix/Repair Invalid HTML in Javascript

提问人:Conor Reid 提问时间:11/27/2021 更新时间:11/29/2021 访问量:559

问:

我目前正在编写一个与富文本编辑器非常相似的程序,我的 HTML 代码输出方式无效,类似于这样:

<span>This is a <em class="test">test</span> title</em>

Google Chrome 将无效的 HTML 呈现为有效的 HTML,如下所示

<span>This is a <em class="test">test</em></span><em class="test"> title</em>

我想找到 Google Chrome(或输出相同结果的解析器)将损坏的 HTML 转换为有效 HTML 的方式,这样我就可以呈现这个有效的 HTML,而不是让每个浏览器使用自己的“HTML 修复技术”,这可能会导致兼容性问题。我看过 HTMLAgilityPack 等程序,但这似乎是针对 .NET 的,我正在使用 Javascript。

老实说,我知道我应该发布自己的代码来做到这一点,但我真的不知道从哪里开始动态更正/修复无效的 HTML 并假设有某种更正标准或库(我的示例也仅基于两层,它可以更深入)但我找不到任何东西。

如能提供任何协助,将不胜感激。

javascript dom html 解析

评论


答:

0赞 Conor Reid 11/29/2021 #1

尽管由于每个浏览器都有自己的实现,这并不能解决 HTML 修复的任何交叉兼容性,但我发现我可以使用 DOMParser API 来访问更正后的 HTML。

const dom = new DOMParser().parseFromString(
  '<span>This is a <em class="test">test</span> title</em>',
  'text/html'
)

这允许我查询 DOMParser 并获取更正后的 HTML

const html = dom.querySelector("body").innerHTML