Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.10.2010, 01:50
Интересующийся
Отправить личное сообщение для SilentImp Посмотреть профиль Найти все сообщения от SilentImp
 
Регистрация: 12.10.2010
Сообщений: 21

first-letter и contenteditable
Приятного дня.

Вопрос: кто то пытался подружить блок с псевдоклассом :first-letter
Например:

.message:first-letter{ 
                    color:#c00; 
                    font:bold 18px/18px Georgia,serif; 
                    letter-spacing:1px; 
                    }


и атрибут contenteditable?
При совместном использовании первая буква не редактируется. Webkit вообще норовит зависнуть.

Если применить contentEditable ко всем дочерним элементам (.message>*,.message), то в принципе оно конечно редактируется. Но ведет себя совершенно не адекватно. В частности — не обновляется эта самая first-letter буква.

Кто то может подсказать решение?
Ответить с цитированием
  #2 (permalink)  
Старый 15.10.2010, 13:50
Интересующийся
Отправить личное сообщение для SilentImp Посмотреть профиль Найти все сообщения от SilentImp
 
Регистрация: 12.10.2010
Сообщений: 21

Количество идей поражает воображение )
Ладно, учитывая то, какую генерирует разметку контентедитебл ... с ним все равно надо чего то думать.
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2010, 16:21
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

а что ты пытаешься сделать-то?
__________________
.ня
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2010, 19:11
Интересующийся
Отправить личное сообщение для SilentImp Посмотреть профиль Найти все сообщения от SilentImp
 
Регистрация: 12.10.2010
Сообщений: 21

Простенький редактор сообщения.
В основном "for fun" и что бы понять как работать с conteneditable и с какими подводными камнями я столкнусь в процессе.

Есть div с текстом.
Редактируем минимально то, что внутри (по сути текст + <br>) и сохраняем или отменяем.

Вот только если на блок навесить :first-letter (Что бы большая и красненькая), то редактировать текст (а конкретно первую букву) в блоке станет затруднительно. Если применить conteneditable к дочерним элементам (вооще то он должен быть inherit по умолчанию, но наверное скрытая разметка, которая генерируется :first-letter — случай особый) то редактироваться оно в принципе будет. Но с отображением этого процесса все равно проблема.

Как решить пока не знаю.
Проблема явно кроссбраузерна.
Ответить с цитированием
  #5 (permalink)  
Старый 15.10.2010, 20:34
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

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

а вообще у меня есть движок для динамической подсветки синтаксиса, на котором можно сделать это и многое другое: http://mojura.110mb.com/i-component/...ield-text.html
__________________
.ня
Ответить с цитированием
  #6 (permalink)  
Старый 15.10.2010, 22:49
Интересующийся
Отправить личное сообщение для SilentImp Посмотреть профиль Найти все сообщения от SilentImp
 
Регистрация: 12.10.2010
Сообщений: 21

Спасибо, но не имеет особого смысла эмулировать работу :first-letter
Я просто надеялся, что есть некий способ подружить contenteditable с этим псевдоселектором, которые я не вижу и которые не могу нагуглить.

Спасибо за ссылку на движек ... постараюсь чему нибудь научится из его кода.

Тоесть, насколько я понимаю, никаких хитрых хаков решающих проблему нет?
Ответить с цитированием
  #7 (permalink)  
Старый 15.10.2010, 22:53
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

хз.. редактирование в браузерах реализовано сейчас через задницу и что-то как-то не видно особых подвижек в этой области =(
__________________
.ня
Ответить с цитированием
  #8 (permalink)  
Старый 15.10.2010, 23:17
Интересующийся
Отправить личное сообщение для SilentImp Посмотреть профиль Найти все сообщения от SilentImp
 
Регистрация: 12.10.2010
Сообщений: 21

Ладно. Буду думать. У меня сейчас еще более забавные особенности наблюдаются. При переводе строки генерируется совершенно идиотская разметка с использованием врапперов. В результате стал отлавливать keydown, keyCode 13 (enter), блокировать событие по умолчанию и добавлять document.execCommand("insertHTML",false,"<br/>");
На этом все браузеры кроме opera успокоились. Opera же упорно добавляет в div контейнер <p><br/></p>. Сижу вот соображаю что с этой бедой делать.
Честно говоря редактирование в браузерах действительно поражает своей реализацией воображение.
Ответить с цитированием
  #9 (permalink)  
Старый 15.10.2010, 23:34
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

я по keypress перехватываю во всех браузерах, вставляю бр-ку и ставлю выделение после него. плюс для оперы вставляю пустой текстовый узел перед ним
__________________
.ня
Ответить с цитированием
  #10 (permalink)  
Старый 15.10.2010, 23:51
Интересующийся
Отправить личное сообщение для SilentImp Посмотреть профиль Найти все сообщения от SilentImp
 
Регистрация: 12.10.2010
Сообщений: 21

А зачем пустой текстовый узел?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск