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!

È stato utile?

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;
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top