Actualmente estoy escribiendo un programa que funciona de manera muy similar a un editor de texto enriquecido, la forma en que se genera mi código HTML no es válida y es similar a esto:
<span>This is a <em class="test">test</span> title</em>Google Chrome representa ese HTML no válido como HTML válido que se ve así
<span>This is a <em class="test">test</em></span><em class="test"> title</em>Quiero encontrar la forma en que Google Chrome (o un analizador que genera los mismos resultados) convierte el HTML roto en ese HTML válido para que pueda representar este HTML válido en lugar de permitir que cada navegador use sus propias "técnicas de reparación de HTML" que podrían causar compatibilidad problemas. He visto programas como HTMLAgilityPack pero parece ser para .NET y estoy usando Javascript.
Honestamente, entiendo que debo publicar mi propio código para hacer esto, pero realmente no tengo idea de dónde comenzar a corregir/reparar dinámicamente el HTML no válido y asumir que hay algún tipo de estándar o biblioteca de corrección (Mi ejemplo solo se basó en dos capas también, podría ir mucho más profundo) pero no he podido encontrar nada.
Cualquier ayuda sería muy apreciada.
Aunque esto no soluciona la compatibilidad cruzada de la reparación de HTML debido a que cada navegador tiene su propia implementación, descubrí que podía usar la API DOMParser para acceder al HTML corregido.
const dom = new DOMParser().parseFromString( '<span>This is a <em class="test">test</span> title</em>', 'text/html' )Esto me permitió consultar el DOMParser y obtener el HTML corregido con
const html = dom.querySelector("body").innerHTML