Pregunta

Implementé el editor de texto enriquecido YUI y me gustaría deshacerme del < html > , < body > y DOCTYPE etiquetas tan pronto como guardo el contenido del editor. Sé que podría hacer esto luego analizando el HTML, pero debe haber una mejor solución.

En este momento esto se guarda cuando edito un texto en el editor YUI:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
    <body>
        <p>foo</p>
    </body>
</html>

... pero me gustaría guardar esto:

<p>foo</p>

¿Alguna idea?

PD: implementé el editor YUI usando el yui_editor plugin para ruby ??on rails , ¡pero una respuesta genérica del editor YUI también sería bienvenida!

¿Fue útil?

Solución

Mientras tanto, resolví el problema yo mismo analizando el html al enviar. Sí, lo sé, al principio no estaba buscando esta solución, pero finalmente llegué a la conclusión de que es la forma más fácil de resolverla. Utilicé el Nokogiri RubyGem para que Rails realice el análisis:

value = Nokogiri::HTML(yui_content).css('body').to_html 
value.gsub!(/<body>/,'') 
value.gsub!(/<\/body>/,'')

Otros consejos

Una solución sería esta, usa expresiones regulares para atrapar todo entre < body > y < / body > . Ejemplo (modificado desde la página del editor YUI):

var myEditor = new YAHOO.widget.Editor('msgpost');
myEditor.render();

YAHOO.util.Event.on('somebutton', 'click', function() {
    myEditor.saveHTML();

    //The var html will now have the contents of the textarea
    var html = myEditor.get('element').value, match;

    match = html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
    html = match ? match[1] : html;
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top