Pergunta

implementei a YUI rico editor de texto e eu gostaria de se livrar do <html>, <body> e etiquetas DOCTYPE assim que guardar o conteúdo do editor. Eu sei que eu poderia fazer isso depois por analisar o HTML, mas deve haver uma solução melhor.

Agora este é salvo quando eu editar um texto no editor de 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>

... mas eu gostaria de apenas salvar este:

<p>foo</p>

Qualquer idéia?

PS: Eu implementou o editor de YUI usando o yui_editor plugin para ruby ??on rails , mas uma resposta genérica editor YUI seria bem-vinda também!

Foi útil?

Solução

Enquanto isso resolveu o problema sozinho por analisar o html em enviar. Sim, eu sei, eu não estava procurando por esta solução num primeiro momento, mas finalmente cheguei à conclusão de que é a maneira mais fácil de resolvê-lo. Eu usei o Nokogiri RubyGem para Rails para fazer a análise:

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

Outras dicas

Uma solução seria isso, ele usa expressões regulares para tudo captura entre <body> e </body>. Exemplo (modificado a partir da página do editor de 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top