YUI editor: Livrar-se de marcas em conteúdo
-
03-07-2019 - |
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!
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;
});