Frage

I implementiert, um den YUI Rich-Text-Editor und ich mag von der loszuwerden <html>, <body> und DOCTYPE Tags sobald ich spare den Inhalt aus dem Editor. Ich weiß, ich könnte dies tun, danach durch die HTML-Parsing, aber es muss eine bessere Lösung sein.

Im Moment dieser gespeichert, wenn ich einen Text in dem YUI-Editor bearbeiten:

<!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>

... aber ich möchte nur diese speichern:

<p>foo</p>

Jede Idee?

PS: Ich implementierte die YUI-Editor die yui_editor Plugin für Ruby on Rails mit , sondern eine YUI-Editor generische Antwort wäre auch willkommen sein!

War es hilfreich?

Lösung

In der Zwischenzeit habe ich das Problem selbst gelöst, indem die HTML-Analyse auf einreichen. Ja, ich weiß, ich war nicht auf der Suche für diese Lösung auf dem ersten, aber schließlich kam ich zu dem Schluss, dass es der einfachste Weg, es zu lösen ist. Ich benutzte die Nokogiri RubyGem für Rails die Analyse zu tun:

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

Andere Tipps

Eine Lösung sein würde, verwendet es reguläre Ausdrücke alles zwischen <body> und </body> zu fangen. Beispiel (modifiziert von der YUI-Editor Seite):

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;
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top