Редактор ЮИ:Избавление от тегов <html> в контенте
-
03-07-2019 - |
Вопрос
Я реализовал Редактор форматированного текста 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>
Есть идеи?
P.S.:Я реализовал редактор YUI, используя Плагин yui_editor для Ruby on Rails, но общий ответ редактора YUI тоже будет приветствоваться!
Решение
Тем временем я сам решил проблему, проанализировав html при отправке.Да, я знаю, сначала я не искал это решение, но в конце концов пришел к выводу, что это самый простой способ решить эту проблему.Я использовал Нокогири 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;
});