Редактор 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 на рельсах, но общий ответ редактора YUI также приветствуется!
2 ответа
Тем временем я решил проблему самостоятельно, анализируя HTML при отправке. Да, я знаю, что сначала я не искал это решение, но в конце концов пришел к выводу, что это самый простой способ его решения. Я использовал Nokogiri RubyGem для Rails для анализа:
value = Nokogiri::HTML(yui_content).css('body').to_html
value.gsub!(/<body>/,'')
value.gsub!(/<\/body>/,'')
Одним из решений было бы это, он использует регулярные выражения, чтобы поймать все между <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;
});