![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
gregoryfly |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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, то всё будет как надо. Пока серьезных недостатков не нашел. |
|||
|
||||
cruelangel |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
что ты подразумеваешь под словом "правильный"? что он должен уметь? (только не в общих чертах, а то потом вдруг выясняется, что-нибудь типа "да ну! это редактор не поддерживает вставку из ворда")
по поводу wymeditor: нельзя банально выделить несколько параграфов и сказать "а это будут блочные цитаты" нельзя отредактировать ссылку после её добавления (вот этого маразма я никогда не понимал) ps: ещё мне в существующих визивигах очень не нравится, что по ентеру создаётся новый параграф, а для переноса строки приходится юзать шифт+ентер, а то и вообще нельзя его вставить никак %-\ а ведь так естественно: втавил подряд два переноса - получи новый праграф. Это сообщение отредактировал(а) cruelangel - 25.9.2007, 01:11 |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Где это "естественно"? В самом ворде, сколько себя помню, именно так: энтер - абзац, шифт-энтер - перенос... так привычно, вроде. А межабзацные отступы, если мешают, можно в CSS убрать. Откуда же это желание (далеко не в первый раз с таким сталкиваюсь) сделать наоборот? Тут согласен, это действительно маразм. По-хорошему, хотелось бы и таблицы иметь возможность именно редактировать, а не тупо создать-удалить... Это сообщение отредактировал(а) SelenIT - 25.9.2007, 02:24 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
cruelangel |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
> Где это "естественно"?
в любом plain-text редакторе. пример - форма ответа на этом форуме. > В самом ворде, сколько себя помню, именно так ворд - далеко не эталон с точки зрения юзабилити и если честно, несколько задалбывает мания создателей визивигов реализовать ворд на базе веб-технологий. получается криво и неудобно. особенно убивает, что одной только клавиатуры не достаточно - приходится то и дело хватать мышку и тянуться к кнопочке на тулбаре.. > энтер - абзац, шифт-энтер - перенос с практической точки зрения: двойное нажатие энтера много проще и быстрее комбинации с шифтом c визуальной точки зрения: более сложная комбинация почему-то реализует менее значимое изменение (перенос строки против нового абзаца) Это сообщение отредактировал(а) cruelangel - 25.9.2007, 02:51 |
|||
|
||||
SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
А тут и нет абзацев ![]()
Оно-то, может быть, и менее значимое, но и гораздо реже востребованное. Обычный юзер (не программист), какой-нибудь гуманитарий, привыкший к Ворду, печатает текст сплошняком, пока "идет связная мысль", мысль закончилась - отбивает энтер - пошел новый абзац. Разрывать строку посреди абзаца приходится гораздо реже, поэтому и реализуется чуть сложнее (также, как и вставка неразрывного пробела вместо обычного, к примеру). Если же принудительно превращать два переноса в абзац, да еще на лету - как быть, если нужны именно два переноса? Нет, имхо, тут в Ворде как раз с точки зрения юзабилити все продумано (и проверено миллионами человеко-часов). По-другому абзацы, имхо, нет смысла делать вообще, т.к. всегда можно обойтись их имитацией (см. выше;). -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
gregoryfly |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.9.2007 Репутация: нет Всего: нет |
да, есть такое... Видимо, не могут корректно определять выделенную область, вот и сделали так...
Можно. Поставьте курсор на ссылку и нажмите "Link". C параграфами там всё сложно. В Опере, например, невозможно создать новый параграф вообще -- по Enter создается <br/>. Вариант с Shift+Enter меня бы устроил... Иногда нужно сделать именно два переноса, а не параграф. Shift+Enter надежнее. WYMeditor -- продукт очень сырой. В последней версии, например, я не смог придумать, как удалить таблицу... Но, зато, принципы редактирования очень правильные. А как красиво там сделано добавление пользовательских классов!! Есть парсер CSS. Я просто определяю в CSS нужные классы и название для них (в виде комментария перед классом). Всё!
Основные идеи прописаны в статье "Пишем правильный online WYSIWYG-редактор". Самые проблемные моменты в реализации на JavaScript:
Последний пункт сложно описать заранее, но это больше касается интерфейса, а не внутренних функций. Но тут также важно, например, корректное определение выделенной области и определение, к чему именно нужно применить действие редактирования. Во многих редакторах есть корректная работа с таблицами. Некоторые даже понимают Ctrl-V из Excel. Лично мне таблицы не нужны (в 98% случаев). Вставка из ворда -- это зло (почти всегда). Сносить всё форматирование, однозначно. Это сообщение отредактировал(а) gregoryfly - 25.9.2007, 09:07 |
||||||
|
|||||||
cruelangel |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
> Два переноса - это всего лишь два переноса (<br><br>)
нет, два переноса - это пустая строка между двумя абзацами текста. > Можно. Поставьте курсор на ссылку и нажмите "Link". хорошо. но всё-равно ждать пока загрузится это окошко... лучше бы тогда уж абсолютный див с формой вставляли... > Иногда нужно сделать именно два переноса, а не параграф. можно пример, когда это семантически обосновано? > Есть парсер CSS. Я просто определяю в CSS нужные классы и название для них (в виде комментария перед классом). Всё! это ты сейчас о каком редакторе? в wymeditor я ничего такого не нашёл... * редактор должен уметь присваивать блочным и строковым элементам нужные тэги с нужными классами * должен работать в IE, FF и, желательно, в Опере (современных версиях) * делать это адекватно ![]() это всё довольно просто реализовать. для строчных элементов - как там описано c помощью foreColor. для блочных - пробегаемся по всем блочным элементам и у касающихся выделения меняем имя тэга и класс. сложности начинаются, когда нужно реализовать убирание строчного выделения у части выделенного текста... > В Опере, например, невозможно создать новый параграф вообще -- по Enter создается <br/>. кстати, да ![]() |
|||
|
||||
SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Это пустая строка, визуально имитирующая разделение plaintext'а на два "псевдоабзаца", если быть точным;). С точки зрения программы это один гигантский абзац с кучей искусственных разрывов. А между настоящими абзацами нет никаких пустых строк - только отступы, заданные стилями. Если существует хоть одна реализация, где двойное нажатие энтера на лету преобразуется в <p></p> - ![]()
Резервирование места для последующей вставки формулы, стихи в стиле Маяковского, иллюстрация просветления... и вообще, правильно ли сначала дать юзеру выбор (разрешив и <br>, и <p>), а потом принудительно решать за него? ...на Вас прямо не угодишь;) Это сообщение отредактировал(а) SelenIT - 25.9.2007, 14:31 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
gregoryfly |
|
||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.9.2007 Репутация: нет Всего: нет |
Конкретно о WYMeditor версии 0.4. Цитата из CSS-файла, который содержит эти все вещи:
А код выглядит вот так: /* PARA: Important */ .important p /* p[@class!="hidden-note"] */ { color: red; font-weight: bold; /* color: red; font-weight: bold; border: 2px solid red; */ } С помощью foreColor -- пробовал. Брал пример из статьи -- всегда корректно работает только в Опере. Кое как заставил работать в IE. Я не профессионал в JavaScript, поэтому не буду спорить... Скорее всего, этот приём можно заставить работать везде. Просто проблема выросла из 20 строчек кода, которые мне были понятны :-) Сейчас, покопавшись в WYMeditor, решил оставить попытки сделать свой редактор (или заказать у профессионалов) -- все тонкости учесть практически не реально. Буду использовать WYM. Попробую приделать к нему некоторые полезные мелочи, например, типограф от студии Лебедева. Плюс, где-то нужно будет взять полноценный менеджер изображений (файлов). |
||||
|
|||||
gregoryfly |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 24.9.2007 Репутация: нет Всего: нет |
В смысле удобства использования хорошие идеи есть в Реформаторе студии Лебедева. К сожалению, не помню, где его взял...
|
|||
|
||||
cruelangel |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
> С точки зрения программы это один гигантский абзац с кучей искусственных разрывов.
c точки зрения программы нет ни текста, ни абзацев - есть только энное число байтов. с точки зрения человека, абзац - это группа предложений, объединённых общим смыслом, визуально отделённая от остального текста. > Если существует хоть одна реализация, где двойное нажатие энтера на лету преобразуется в <p></p> http://dark-demon.jino-net.ru/wysiwiki2/index.xml но она ещё не готова к употреблению > Резервирование места для последующей вставки формулы а зачем его резервировать? если "чтобы потом быстро найти места куда вставлять", то лучше не пустое место оставлять, а встявлять яркий маркер "не забыть вставить сюда формулу". > стихи в стиле Маяковского и при чём тут пустые строки? > иллюстрация просветления о да.. такой креатив шопипец... > правильно ли сначала дать юзеру выбор (разрешив и <br>, и <p>), а потом принудительно решать за него? неправильно, выбора давать не надо изначально ![]() Это сообщение отредактировал(а) cruelangel - 25.9.2007, 18:00 |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Но в языках разметки есть абзац (<p></p>) и разрыв строки (<br>) - разные сущности с абсолютно разной семантикой. Оперная реализация так и делает... ;) cruelangel, Ваше? Ох, сомнительная фича. Лично меня, например, любая "магия", творящаяся без спросу, люто раздражает. Предлагаю вынести юзабельность такого подхода на голосование. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
cruelangel |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
> Но в языках разметки есть абзац (<p></p>) и разрыв строки (<br>) - разные сущности с абсолютно разной семантикой.
именно поэтому и надо преобразовывать бряки в параграфы, ведь разделение двух участков текста пустой строкой для пользователя фактически означает деление на абзацы. >> неправильно, выбора давать не надо изначально > Оперная реализация так и делает... ;) вот бы она ещё два бряка в параграф преобразовывала - цены бы ей не было. а то никак не могу её этому научить %-( Добавлено через 8 минут и 7 секунд что ж, давай попробуем с опросом: http://forum.vingrad.ru/forum/act-ST/f-319...6/unread-1.html |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Визуальное и не более того. Лично для меня пустая строка - это просто пустая строка, никакого "магического эффекта" я от нее не жду. Мне абсолютно без разницы, как она реализована (бряком или <p> </p>), зато принципиально, чтобы результат нажатия энтера был предсказуемым и единообразным. Мало ли, вдруг какую-нибудь особо важную мысль я захочу отделить не одной, а двумя пустыми строками. Или напишу загадку с ответом, а перед ним захочу вбить кучу пустых строк, чтоб до поры до времени скрыть его за экраном. Кстати, если не путаю, новички в том же ворде часто отбивают лишний энтер между абзацами, но их от этого специально отучают и приучают вместо этого пользоваться отступами... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
cruelangel |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
> Кстати, если не путаю, новички в том же ворде часто отбивают лишний энтер между абзацами,
> но их от этого специально отучают и приучают вместо этого пользоваться отступами... в частности второй способ, против которого ты выступаешь, и отучает новичков отбивать пустые строки энтерами (или шифт+энтерами, не принципиально), а приучает использовать специальные элементы: "особо важная мысль" и "скрытый ответ на загадку". Это сообщение отредактировал(а) cruelangel - 26.9.2007, 16:19 |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |