2009-03-04 4 views
0

Я реализовал YUI rich text editor, и я хотел бы избавиться от тегов <html>, <body> и DOCTYPE как только сохранить содержимое из редактора. Я знаю, что смогу сделать это позже, разобрав HTML, но должно быть лучшее решение.YUI Редактора: Избавление от <html> тегов в содержании

Сейчас это сохраняется, когда я редактирования текста в редакторе 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> 

... но я хотел бы просто сохранить это:

<p>foo</p> 

Любая идея?

P.S .: Я внедрил редактор YUI, используя yui_editor plugin for ruby on rails, но универсальный ответ редактора YUI тоже приветствуется!

ответ

1

В то же время я решил проблему сам путем разбора HTML на кнопку. Да, я знаю, я сначала не искал этого решения, но, наконец, пришел к выводу, что это самый простой способ его решения. Я использовал Nokogiri RubyGem для Rails для разбора:

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

Одним из решений было бы это, он использует регулярные выражения, чтобы поймать все между <body> и </body>. Пример (редактировался страницы редактора 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; 
});