contenteditable div на самом деле не редактируется в webkit

У меня есть div с атрибутом contenteditable, установленным на true, однако он не показывает мигающий курсор и не обновляется, когда я набираю в него текст. Я добавил слушателей событий для фокуса, нажатия клавиш и нажатия клавиш, чтобы узнать, получает ли их div, И ЭТО ЕСТЬ!

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

Кроме того, у меня несколько раз получалось, что contenteditable отлично работает над разными проектами, так что я вполне уверен, что это какая-то ошибка, вызванная структурой HTML этой конкретной страницы. Опять же, проблема возникает только в Chrome и Safari; Firefox и IE8 в порядке.


person mateolargo    schedule 22.11.2010    source источник


Ответы (2)


Хорошо, я понял свою проблему. У меня для свойства css '-webkit-user-select' установлено значение none для элемента вверх по иерархии рассматриваемого div. Таким образом, это препятствовало тому, чтобы курсор когда-либо находился в моем div contentEditable.

Интересно, что соответствующий '-moz-user-select' (который я также установил в значение none в иерархии) не влияет на Firefox таким же образом.

person mateolargo    schedule 23.11.2010
comment
Это абсолютно правильно, я не мог понять, почему мой сайт не разрешал мне вносить какие-либо изменения, а затем понял, что выбор пользователя отключен. Спасибо. - person MKN Web Solutions; 26.06.2013
comment
Вы могли бы не публиковать ответ, но вы этого не сделали, спасибо - person Murali VP; 12.08.2015

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

html,body{
    -webkit-user-select: none;
    -webkit-touch-callout: none;
}

*[contenteditable] {
    -webkit-user-select: auto !important;
}
person Federico    schedule 13.10.2013