Editor YUI: eliminazione di < html > tag nel contenuto
-
03-07-2019 - |
Domanda
Ho implementato il YUI rich text editor e vorrei sbarazzarmi del < html >
, < body >
e DOCTYPE
non appena salvo il contenuto dall'editor. So che potrei farlo in seguito analizzando l'HTML, ma ci deve essere una soluzione migliore.
In questo momento questo viene salvato quando modifico un testo nell'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>
... ma vorrei solo salvare questo:
<p>foo</p>
Qualche idea?
PS: ho implementato l'editor YUI usando il yui_editor plugin per ruby ??on rails , ma sarebbe gradita anche una risposta generica all'editore YUI!
Soluzione
Nel frattempo ho risolto il problema da solo analizzando l'html su submit. Sì, lo so, all'inizio non cercavo questa soluzione, ma alla fine sono giunto alla conclusione che è il modo più semplice per risolverlo. Ho usato il Nokogiri RubyGem affinché Rails eseguisse l'analisi:
value = Nokogiri::HTML(yui_content).css('body').to_html
value.gsub!(/<body>/,'')
value.gsub!(/<\/body>/,'')
Altri suggerimenti
Una soluzione sarebbe questa, usa espressioni regolari per catturare tutto tra < body
> e < / body >
. Esempio (modificato dalla pagina dell'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;
});