Редактор YUI: избавление от тегов ‹html› в контенте

Я внедрил текстовый редактор YUI и хотел бы избавиться от <html>, <body> и DOCTYPE, как только я сохраню содержимое из редактора. Я знаю, что мог бы сделать это позже, проанализировав 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>

Любая идея?

PS: я реализовал редактор YUI с помощью плагина yui_editor для ruby ​​on rails, но Общий ответ редактора YUI тоже приветствуется!


person Javier    schedule 04.03.2009    source источник


Ответы (2)


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

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

Одним из решений может быть следующее: он использует регулярные выражения, чтобы поймать все, что находится между <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;
});
person moff    schedule 04.03.2009