вторник, 28 июня 2011 г.

Разбор WYSIWYG

Тестирование онлайн редакторов, как оказалось, весьма забавная штука. Хотя истины ради, тут не совсем тестирование, поскольку требовалось сделать выбор между несколькими, а не протестить какой то один. Тем не менее...

Условно можно разбить все редакторы на два типа - первые пользуются элементом textarea, вторые - свойством contenteditable. Первые генерируют код, одинаковый для всех браузеров, код же вторых - от браузера зависит достаточно сильно. Подробно на английском и перевод. Однако, одним из требований к выбираемому редактору была возможность использования в режиме inplace. То есть, редактор должен уметь сам, без посторонней помощи, конвертировать любой элемент в себя, редактировать его содержимое, сохранять на сервер, и собственно, безболезненно возвращать элемент на место уже с обновленным содержимым. Редакторы первой группы (в большинстве своем), несмотря на свои достоинства, без посторонней помощи произвольные элементы конвертировать в себя не могут. Им требуется форма, над которой они могут навесить свою функциональность. Либо придется использовать еще какой либо плагин для превращения их в inplace.
Редакторы же из второй группы, как раз напротив, не имеют особых пристрастий к определенным элементам. С их помощью (опять же, не у всех) можно редактировать любой элемент страницы. Всеми любимые и популярные TinyMCE и CKEditor относятся как раз ко второй группе, а вот GoogleDocs от редактора на базе contenteditable отказался по причине несовершенства выдаваемого HTML. Тут надо бы ссылку, но я её сам потерял, а искать лень.

Из этих соображений, а так же из невысоких требований к качеству выдаваемого HTML было решено копать в сторону contenteditable-редакторов. Поиск по просторам интернета выдал пачку простых и не очень редакторов. Мощные редакторы TinyMCE, CKEditor и elRTE были отброшены изза большого веса и излишней, в моём случае, функциональности. Как оказалось, многие из редакторов второй группы все равно требуют для встраивания элемент textarea, что было достаточно удивительно. Вторым удручающим моментом было использование ими элемента iframe для редактирования. Причины этого понятны - свойство designmode применяется ко всему документу. Но кто мешает использовать contenteditable? Третьим фактором, мешающим использованию, было жесткое встраивание работы с сервером в сам редактор. В моём случае работа с сервером не базируется на классической модели поведения - поправил-сохранил. Скажем, если требуется редактировать несколько элементов, а потом сохранить их за один раз, то встроенная функция сохранения только мешает. По вышеуказанным причинам отпали CLEEditor, Aloha.

Ряд надстроек над редакторами, позволяющими встраивать их inplace были выброшены из рассмотрения сразу. Сюда попали IPWeditor, делающий CKEditor и TinyMCE inplace-редакторами и аналогичная поделка для Xina - WIP. Надстройки над надстройками - это костыль.

Достаточно интересным показался "визуальный редактор" от Imperavi, но посмотрев его код, я все таки думаю от него отказаться. Большое количество глобальных переменных, плагины, по сути плагинами не являющиеся. Несколько сумбурный исходник заставляет думать что над проектом работали не менее двух человек с абсолютно разной квалификацией. Сыро, в общем. Но если над ним хорошенько поработать, тут есть серьёзный потенциал. Редактор невелик, функциональностью не пересыщен. Ведь не всем нужен онлайн Word.

Про мелкие редакторы, коих пруд пруди говорить уже не хочется. Это либо потуги быстро перегорающей молодёжи, начавшей с наполеоновскими планами и бросившей на полдороги, либо что то заточенное исключительно под себя, либо давно заброшенные проекты. Я не упомянул NinjaEditor. Не смог скачать - у них сервер лежит. Может позже дополню статью.

Свой выбор я еще не сделал. Комментарии приветствуются.


1 комментарий:

sss комментирует...

nicedit.com

Отправить комментарий