Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема создания онлайн WYSIWYG-редактора, Реально ли сделать правильный WYSIWYG? 
:(
    Опции темы
gregoryfly
Дата 24.9.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.9.2007

Репутация: нет
Всего: нет



Предыстория: Нужен правильный онлайн WYSIWYG-редактор. Попытки найти что-то из уже готового привели к ужасным монстрам FCKeditor и TinyMCE. Как показывает опыт работы с ними, такая функциональность только мешает. Пришел к выводу, что нужен редактор с минимальным набором функций.

Очень понравились идеи, озвученные в статье "Пишем правильный online WYSIWYG-редактор". К сожалению, код, приведенный в статье, в современных (даже не в самых новых) браузерах оказался не работоспособен: в IE 6 не работает редактирование блочных элементов, в FF 1.5 -- строчных. Опера более-менее корректно работает, но там что-то с определением выделенной области...

Существует ли работающий WYSIWYG-редактор, построенный на этих принципах?

Из огромного количества существующих редакторов хотел бы выделить:
http://www.spearance.ru/parser3/wysiwyg/ -- простейший, но корректно работающий в Опере, FF и IE.
https://apps.carleton.edu/opensource/loki/demo/ -- очень правильный редактор (судя по demo). Только я, почему-то, не смог запустить его на своем сервере...

Ссылки по теме (куда меня уже не нужно отправлять):

http://www.hostinfo.ru/articles/web/rubric...5/rubric75/997/ -- обзор основных редакторов (рус.)
http://www.geniisoft.com/showcase.nsf/WebEditors -- Обширный список WYSIWYG-редакторов 
http://htmlarea.com/directory/Web_Software...YSIWYG_Editors/ -- Каталог WYSIWYG-редакторов



P.S.

буквально сейчас еще раз просматривал списки всего найденного и обратил внимание на старую версию одного из редакторов (последняя версия не работоспособна): http://demo.wymeditor.org/wymeditor/tags/0...itor/editor.htm
(http://www.wymeditor.org/en/demo/ -- тут все версии)
Это не совсем WYSIWYG -- они называют это WYSIWYM (). Но, думаю, если применить стили редактируемого документа к тому, что лежит в iframe, то всё будет как надо. Пока серьезных недостатков не нашел.
PM MAIL   Вверх
cruelangel
Дата 25.9.2007, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



что ты подразумеваешь под словом "правильный"? что он должен уметь? (только не в общих чертах, а то потом вдруг выясняется, что-нибудь типа "да ну! это редактор не поддерживает вставку из ворда")

по поводу wymeditor:
 нельзя банально выделить несколько параграфов и сказать "а это будут блочные цитаты"
 нельзя отредактировать ссылку после её добавления (вот этого маразма я никогда не понимал)

ps: ещё мне в существующих визивигах очень не нравится, что по ентеру создаётся новый параграф, а для переноса строки приходится юзать шифт+ентер, а то и вообще нельзя его вставить никак %-\ а ведь так естественно: втавил подряд два переноса - получи новый праграф.

Это сообщение отредактировал(а) cruelangel - 25.9.2007, 01:11
PM MAIL   Вверх
SelenIT
Дата 25.9.2007, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(cruelangel @  25.9.2007,  01:06 Найти цитируемый пост)
ведь так естественно: втавил подряд два переноса - получи новый праграф.

Где это "естественно"? В самом ворде, сколько себя помню, именно так: энтер - абзац, шифт-энтер - перенос... так привычно, вроде. А межабзацные отступы, если мешают, можно в CSS убрать. Откуда же это желание (далеко не в первый раз с таким сталкиваюсь) сделать наоборот?

Цитата(cruelangel @  25.9.2007,  01:06 Найти цитируемый пост)
нельзя отредактировать ссылку после её добавления

Тут согласен, это действительно маразм. По-хорошему, хотелось бы и таблицы иметь возможность именно редактировать, а не тупо создать-удалить...

Это сообщение отредактировал(а) SelenIT - 25.9.2007, 02:24


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
cruelangel
Дата 25.9.2007, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> Где это "естественно"? 

в любом plain-text редакторе. пример - форма ответа на этом форуме.


> В самом ворде, сколько себя помню, именно так

ворд - далеко не эталон с точки зрения юзабилити
и если честно, несколько задалбывает мания создателей визивигов реализовать ворд на базе веб-технологий. получается криво и неудобно. особенно убивает, что одной только клавиатуры не достаточно - приходится то и дело хватать мышку и тянуться к кнопочке на тулбаре..


> энтер - абзац, шифт-энтер - перенос

с практической точки зрения: двойное нажатие энтера много проще и быстрее комбинации с шифтом
c визуальной точки зрения: более сложная комбинация почему-то реализует менее значимое изменение (перенос строки против нового абзаца)


Это сообщение отредактировал(а) cruelangel - 25.9.2007, 02:51
PM MAIL   Вверх
SelenIT
Дата 25.9.2007, 04:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(cruelangel @  25.9.2007,  02:41 Найти цитируемый пост)
в любом plain-text редакторе. пример - форма ответа на этом форуме

А тут и нет абзацев smile. Два переноса - это всего лишь два переноса (<br><br>). Но отбивать абзацами, имхо, и красивее, и логичнее...

Цитата(cruelangel @  25.9.2007,  02:41 Найти цитируемый пост)
более сложная комбинация почему-то реализует менее значимое изменение (перенос строки против нового абзаца)

Оно-то, может быть, и менее значимое, но и гораздо реже востребованное. Обычный юзер (не программист), какой-нибудь гуманитарий, привыкший к Ворду, печатает текст сплошняком, пока "идет связная мысль", мысль закончилась - отбивает энтер - пошел новый абзац. Разрывать строку посреди абзаца приходится гораздо реже, поэтому и реализуется чуть сложнее (также, как и вставка неразрывного пробела вместо обычного, к примеру). Если же принудительно превращать два переноса в абзац, да еще на лету - как быть, если нужны именно два переноса? Нет, имхо, тут в Ворде как раз с точки зрения юзабилити все продумано (и проверено миллионами человеко-часов). По-другому абзацы, имхо, нет смысла делать вообще, т.к. всегда можно обойтись их имитацией (см. выше;).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
gregoryfly
Дата 25.9.2007, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.9.2007

Репутация: нет
Всего: нет



Цитата

нельзя банально выделить несколько параграфов и сказать "а это будут блочные цитаты"

да, есть такое... Видимо, не могут корректно определять выделенную область, вот и сделали так...

Цитата

нельзя отредактировать ссылку после её добавления (вот этого маразма я никогда не понимал)

Можно. Поставьте курсор на ссылку и нажмите "Link".

C параграфами там всё сложно. В Опере, например, невозможно создать новый параграф вообще -- по Enter создается <br/>. Вариант с Shift+Enter меня бы устроил... Иногда нужно сделать именно два переноса, а не параграф. Shift+Enter надежнее.

WYMeditor -- продукт очень сырой. В последней версии, например, я не смог придумать, как удалить таблицу... Но, зато, принципы редактирования очень правильные.

А как красиво там сделано добавление пользовательских классов!! Есть парсер CSS. Я просто определяю в CSS нужные классы и название для них (в виде комментария перед классом). Всё!

Цитата

что ты подразумеваешь под словом "правильный"? что он должен уметь?

Основные идеи прописаны в статье "Пишем правильный online WYSIWYG-редактор".
Самые проблемные моменты в реализации на JavaScript:
  • редактор должен уметь присваивать блочным и строковым элементам нужные тэги с нужными классами
  • должен работать в IE, FF и, желательно, в Опере (современных версиях)
  • делать это адекватно :-)

Последний пункт сложно описать заранее, но это больше касается интерфейса, а не внутренних функций. Но тут также важно, например, корректное определение выделенной области и определение, к чему именно нужно применить действие редактирования.

Во многих редакторах есть корректная работа с таблицами. Некоторые даже понимают Ctrl-V из Excel. Лично мне таблицы не нужны (в 98% случаев).

Вставка из ворда -- это зло (почти всегда). Сносить всё форматирование, однозначно.

Это сообщение отредактировал(а) gregoryfly - 25.9.2007, 09:07
PM MAIL   Вверх
cruelangel
Дата 25.9.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> Два переноса - это всего лишь два переноса (<br><br>)

нет, два переноса - это пустая строка между двумя абзацами текста.


> Можно. Поставьте курсор на ссылку и нажмите "Link".

хорошо. но всё-равно ждать пока загрузится это окошко... лучше бы тогда уж абсолютный див с формой вставляли...


> Иногда нужно сделать именно два переноса, а не параграф. 

можно пример, когда это семантически обосновано?


> Есть парсер CSS. Я просто определяю в CSS нужные классы и название для них (в виде комментария перед классом). Всё!

это ты сейчас о каком редакторе? в wymeditor я ничего такого не нашёл...


    * редактор должен уметь присваивать блочным и строковым элементам нужные тэги с нужными классами
    * должен работать в IE, FF и, желательно, в Опере (современных версиях)
    * делать это адекватно smile

это всё довольно просто реализовать. для строчных элементов - как там описано c помощью foreColor. для блочных - пробегаемся по всем блочным элементам и у касающихся выделения меняем имя тэга и класс. сложности начинаются, когда нужно реализовать убирание строчного выделения у части выделенного текста...


> В Опере, например, невозможно создать новый параграф вообще -- по Enter создается <br/>.

кстати, да smile опера по энтеру вставляет бряк и никого не хочет слушать...
PM MAIL   Вверх
SelenIT
Дата 25.9.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(cruelangel @  25.9.2007,  11:31 Найти цитируемый пост)
нет, два переноса - это пустая строка между двумя абзацами текста.

Это пустая строка, визуально имитирующая разделение plaintext'а на два "псевдоабзаца", если быть точным;).

С точки зрения программы это один гигантский абзац с кучей искусственных разрывов. А между настоящими абзацами нет никаких пустых строк - только отступы, заданные стилями.

Если существует хоть одна реализация, где двойное нажатие энтера на лету преобразуется в <p></p> -  smile 

Цитата(cruelangel @  25.9.2007,  11:31 Найти цитируемый пост)
> Иногда нужно сделать именно два переноса, а не параграф. 
можно пример, когда это семантически обосновано?

Резервирование места для последующей вставки формулы, стихи в стиле Маяковского, иллюстрация просветления... и вообще, правильно ли сначала дать юзеру выбор (разрешив и <br>, и <p>), а потом принудительно решать за него?

Цитата(cruelangel @  25.9.2007,  11:31 Найти цитируемый пост)
опера по энтеру вставляет бряк и никого не хочет слушать...

...на Вас прямо не угодишь;)

Это сообщение отредактировал(а) SelenIT - 25.9.2007, 14:31


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
gregoryfly
Дата 25.9.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.9.2007

Репутация: нет
Всего: нет



Цитата(cruelangel @  25.9.2007,  11:31 Найти цитируемый пост)
это ты сейчас о каком редакторе? в wymeditor я ничего такого не нашёл...

Конкретно о WYMeditor версии 0.4.
Цитата из CSS-файла, который содержит эти все вещи:
Цитата
    The classes panel, the visual feedback and the preview
    will be affected by these values.
    
    - Commented styles inside style definitions are used for visual 
      feedback when using the editor.
    - Comments before opening the style are used as caption.
    - Comments after the class name and before the style declaration ({)
      define the jQuery expression that decides whether this 
      style should be applied or not.


А код выглядит вот так:

/* PARA: Important */
.important p /* p[@class!="hidden-note"] */ {
    color: red; font-weight: bold;
    /* color: red; font-weight: bold; border: 2px solid red; */
}


Цитата(cruelangel @  25.9.2007,  11:31 Найти цитируемый пост)

для строчных элементов - как там описано c помощью foreColor.

С помощью foreColor -- пробовал. Брал пример из статьи -- всегда корректно работает только в Опере. Кое как заставил работать в IE. Я не профессионал в JavaScript, поэтому не буду спорить... Скорее всего, этот приём можно заставить работать везде. Просто проблема выросла из 20 строчек кода, которые мне были понятны :-)

Сейчас, покопавшись в WYMeditor, решил оставить попытки сделать свой редактор (или заказать у профессионалов) -- все тонкости учесть практически не реально. Буду использовать WYM. Попробую приделать к нему некоторые полезные мелочи, например, типограф от студии Лебедева. Плюс, где-то нужно будет взять полноценный менеджер изображений (файлов).
PM MAIL   Вверх
gregoryfly
Дата 25.9.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.9.2007

Репутация: нет
Всего: нет



В смысле удобства использования хорошие идеи есть в Реформаторе студии Лебедева. К сожалению, не помню, где его взял...
PM MAIL   Вверх
cruelangel
Дата 25.9.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> С точки зрения программы это один гигантский абзац с кучей искусственных разрывов.

c точки зрения программы нет ни текста, ни абзацев - есть только энное число байтов. с точки зрения человека, абзац - это группа предложений, объединённых общим смыслом, визуально отделённая от остального текста.


> Если существует хоть одна реализация, где двойное нажатие энтера на лету преобразуется в <p></p>

http://dark-demon.jino-net.ru/wysiwiki2/index.xml но она ещё не готова к употреблению


> Резервирование места для последующей вставки формулы

а зачем его резервировать? если "чтобы потом быстро найти места куда вставлять", то лучше не пустое место оставлять, а встявлять яркий маркер "не забыть вставить сюда формулу".


> стихи в стиле Маяковского

и при чём тут пустые строки?


> иллюстрация просветления

о да.. такой креатив шопипец...


> правильно ли сначала дать юзеру выбор (разрешив и <br>, и <p>), а потом принудительно решать за него?

неправильно, выбора давать не надо изначально smile


Это сообщение отредактировал(а) cruelangel - 25.9.2007, 18:00
PM MAIL   Вверх
SelenIT
Дата 25.9.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(cruelangel @  25.9.2007,  17:51 Найти цитируемый пост)
c точки зрения программы нет ни текста, ни абзацев - есть только энное число байтов

Но в языках разметки есть абзац (<p></p>) и разрыв строки (<br>) - разные сущности с абсолютно разной семантикой.

Цитата(cruelangel @  25.9.2007,  17:51 Найти цитируемый пост)
неправильно, выбора давать не надо изначально

Оперная реализация так и делает... ;)

Цитата(cruelangel @  25.9.2007,  17:51 Найти цитируемый пост)
http://dark-demon.jino-net.ru/wysiwiki2/index.xml

cruelangel, Ваше? Ох, сомнительная фича. Лично меня, например, любая "магия", творящаяся без спросу, люто раздражает. Предлагаю вынести юзабельность такого подхода на голосование.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
cruelangel
Дата 25.9.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> Но в языках разметки есть абзац (<p></p>) и разрыв строки (<br>) - разные сущности с абсолютно разной семантикой.

именно поэтому и надо преобразовывать бряки в параграфы, ведь разделение двух участков текста пустой строкой для пользователя фактически означает деление на абзацы.


>> неправильно, выбора давать не надо изначально
> Оперная реализация так и делает... ;)

вот бы она ещё два бряка в параграф преобразовывала - цены бы ей не было. а то никак не могу её этому научить %-(

Добавлено через 8 минут и 7 секунд
что ж,  давай попробуем с опросом: http://forum.vingrad.ru/forum/act-ST/f-319...6/unread-1.html
PM MAIL   Вверх
SelenIT
Дата 26.9.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(cruelangel @  25.9.2007,  20:08 Найти цитируемый пост)
разделение двух участков текста пустой строкой для пользователя фактически означает деление на абзацы.

Визуальное и не более того. Лично для меня пустая строка - это просто пустая строка, никакого "магического эффекта" я от нее не жду. Мне абсолютно без разницы, как она реализована (бряком или <p>&nbsp;</p>), зато принципиально, чтобы результат нажатия энтера был предсказуемым и единообразным. Мало ли, вдруг какую-нибудь особо важную мысль я захочу отделить не одной, а двумя пустыми строками. Или напишу загадку с ответом, а перед ним захочу вбить кучу пустых строк, чтоб до поры до времени скрыть его за экраном.

Кстати, если не путаю, новички в том же ворде часто отбивают лишний энтер между абзацами, но их от этого специально отучают и приучают вместо этого пользоваться отступами...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
cruelangel
Дата 26.9.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> Кстати, если не путаю, новички в том же ворде часто отбивают лишний энтер между абзацами,
> но их от этого специально отучают и приучают вместо этого пользоваться отступами...

в частности второй способ, против которого ты выступаешь, и отучает новичков отбивать пустые строки энтерами (или шифт+энтерами, не принципиально), а приучает использовать специальные элементы: "особо важная мысль" и "скрытый ответ на загадку". 

Это сообщение отредактировал(а) cruelangel - 26.9.2007, 16:19
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1066 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.