2010-10-11 10 views
7

Ich habe eine contenteditable div, die bei Pageload konzentriert werden muss (platzieren Sie den Cursor in der ersten Zeile).ContentEditable Fokus in Chrome/Safari

document.getElementById("editor").focus() funktioniert gut in Firefox und IE, aber in Chrome/Safari es wählt nur den gesamten Inhalt!

Gibt es eine Möglichkeit, dies richtig funktionieren zu lassen?

Vielen Dank im Voraus,
Shesh

+0

Es scheint, zu sehen sein r Begrenzung. Auch mit der Tabulatortaste wird immer dann, wenn div [contenteditable] den Fokus erhält, Text darin hervorgehoben. –

+0

Danke für die Antwort! Ja, das scheint auch bei TAB zu sein. :) – Sheshbabu

+0

+1 Jemand hat deine perfekte Frage abgelehnt. –

Antwort

2

Diese Frage kann nicht mehr an den Fragesteller relevant sein, aber ich werde es für zukünftige Leser beantworten. Das Grundprinzip besteht darin, die Auswahl am Anfang des Elements auf einen reduzierten Bereich zu setzen.

löste ich dieses Problem, indem die Rangy JS-Bibliothek: http://code.google.com/p/rangy

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

Dies könnte mehr sein, als notwendig ist, aber es funktioniert definitiv Cross-Browser und Rangy bietet eine Reihe von zusätzlichen Utilities und so ist es wahrscheinlich ist lohnt ein Blick in :)

0

ich in der Lage war, den Fokus auf ein DIV hinzufügen, indem Sie den Fokus() -Methode verkettete Aufruf an die attr() -Methode

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