2009-03-04 6 views
0

implementiert ich die YUI rich text editor und ich möchte <body> und DOCTYPE Tags der <html>, um loszuwerden, sobald ich den Inhalt aus dem Editor speichern. Ich weiß, dass ich das später durch das Parsen des HTML machen könnte, aber es muss eine bessere Lösung geben.YUI Editor: Loswerden von <html> Tags im Inhalt

Gerade jetzt diese gespeichert, wenn ich einen Text im Editor YUI 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 sparen:

<p>foo</p> 

Jede Idee?

P.S .: Ich habe den YUI-Editor mit der yui_editor plugin for ruby on rails implementiert, aber eine YUI-Editor generische Antwort wäre auch willkommen!

Antwort

1

In der Zwischenzeit habe ich das Problem selbst durch Parsen des HTML gelöst auf einreichen. Ja, ich weiß, ich habe zuerst nicht nach dieser Lösung gesucht, aber letztendlich bin ich zu dem Schluss gekommen, dass es der einfachste Weg ist, es zu lösen. Ich benutzte die Nokogiri RubyGem für Schienen, um die Analyse zu tun:

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

Eine Lösung wäre dies, es verwendet reguläre Ausdrücke, um alles zwischen <body> und </body> zu fangen. Beispiel (aus der Editor Seite YUI modifizierte):

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; 
});