es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reparar dinámicamente HTML inválido en Javascript.

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 es inválida y similar a esto:

<span>Esto es una <em class="test">prueba</em></span> título

Google Chrome convierte ese HTML inválido en HTML válido que se ve así:

<span>Esto es una <em class="test">prueba</em></span><em class="test"> título</em>

Quiero encontrar la forma en que Google Chrome (o un analizador que dé los mismos resultados) convierte el HTML roto en ese HTML válido, para que pueda renderizar este HTML válido en lugar de permitir que cada navegador use sus propias “técnicas de reparación de HTML”, lo que podría causar problemas de compatibilidad. He visto programas como HTMLAgilityPack que parecen ser para .NET y estoy usando Javascript.

Sinceramente, entiendo que debería publicar mi propio código para hacer esto, pero realmente no tengo ni idea de por dónde empezar a corregir/reparar dinámicamente el HTML inválido y supongo que existe algún tipo de estándar o biblioteca de corrección (mi ejemplo solo se basaba en dos capas, podría ser mucho más profundo), pero no he podido encontrar nada.

Cualquier ayuda sería muy apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en javascript, html, dom y html-parsing, entiendo el problema que está enfrentando con la salida de código HTML no válido y la necesidad de encontrar una solución para mostrar HTML válido.

    Una posible solución es usar una biblioteca que analice HTML en javascript, como jsdom o cheerio. Estas bibliotecas pueden analizar el código HTML no válido y generar HTML válido.

    Por ejemplo, utilizando jsdom, puede analizar el código HTML y acceder al modelo de objeto del documento (DOM) para manipular y mostrar el HTML.

    const jsdom = require("jsdom");
    const { JSDOM } = jsdom;
    
    const html = '<span>This is a <em class="test">test</span> title</em>';
    
    const dom = new JSDOM(html);
    
    // Acceda al HTML renderizado
    console.log(dom.window.document.documentElement.outerHTML);
    

    Esto generará HTML válido:

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

    Con este enfoque, puede asegurarse de que se muestre el HTML de manera consistente en diferentes navegadores y evitar problemas de compatibilidad.

Comments are closed.