ContentEditable фокус в Chrome / Safari - PullRequest
7 голосов
/ 11 октября 2010

У меня есть contenteditable div, который нужно сфокусировать при загрузке страницы (поместите курсор на первую строку).

document.getElementById("editor").focus() хорошо работает в Firefox и IE, но в Chrome / Safari он просто выбирает весьcontent!

Есть ли способ заставить эту работу работать правильно?

Заранее спасибо,Shesh

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

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

Я решил эту проблему с помощью библиотеки Rangy JS: http://code.google.com/p/rangy

var r = rangy.createRange();
r.setStart( document.getElementById('editor'), 0 );
r.collapse(true);
rangy.getSelection().setSingleRange(r);

Это может быть больше, чем необходимо, но он определенно работает в кросс-браузерном режиме, и Rangy также предоставляет кучу дополнительных утилит, так что, вероятно, стоит посмотреть:)

0 голосов
/ 17 декабря 2013

Мне удалось добавить фокус в DIV, вызвав метод focus (), связанный с методом attr ()

$el.attr('contenteditable', "true").focus()
...