2010-10-11 10 views
7

Mam contenteditable div, który musi być skupiony na pageload (umieść kursor w pierwszym wierszu).ContentEditable fokus w przeglądarce Chrome/Safari

document.getElementById("editor").focus() działa dobrze w przeglądarkach Firefox i IE, ale w Chrome/Safari po prostu wybiera całą zawartość!

Czy istnieje sposób, aby to działało poprawnie?

Dzięki z góry,
Shesh

+0

wydaje się przeglądać r ograniczenie. Nawet za pomocą klawisza tabulacji, gdy tylko div [contenteditable] staje się aktywny, podświetla tekst w środku. –

+0

Dzięki za odpowiedź! Tak, wydaje się, że tak też jest w przypadku TAB. :) – Sheshbabu

+0

+1 Ktoś zagłosował na twoje doskonale doskonałe pytanie. –

Odpowiedz

2

To pytanie może nie być odpowiednie dla pytającego, ale ja odpowiem go dla przyszłych czytelników. Podstawową zasadą jest ustawienie zaznaczenia na zwiniętym zakresie na początku elementu.

I rozwiązać ten problem przy użyciu biblioteki smukły JS: http://code.google.com/p/rangy

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

Może to być więcej niż jest to konieczne, ale na pewno działa z różnymi przeglądarkami i smukły zapewnia kilka dodatkowych narzędzi, a więc jest to prawdopodobnie warto przyjrzeć się :)

0

udało mi się skupić, aby dodać DIV wywołując ostrość() metoda przykuty do sposobu attr()

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