2010-10-11 15 views
7

Ho un div contenteditable che deve essere focalizzato sul pageload (posiziona il cursore sulla prima riga).Messa a fuoco ContentEditable in Chrome/Safari

document.getElementById("editor").focus() funziona bene con Firefox e IE, ma in Chrome/Safari seleziona solo l'intero contenuto!

C'è un modo per farlo funzionare correttamente?

Grazie in anticipo,
Shesh

+0

sembra essere navigare r limitazione. Anche con il tasto tab, anche quando div [contenteditable] ottiene il focus, evidenzia il testo al suo interno. –

+0

Grazie per la risposta! Sì, sembra che sia il caso anche con TAB. :) – Sheshbabu

+0

+1 Qualcuno ha votato la tua domanda perfettamente perfetta. –

risposta

2

Questa domanda non possono più essere rilevanti per l'interrogante, ma io risponderò per futuri lettori. Il principio di base è impostare la selezione su un intervallo collassato all'inizio dell'elemento.

Ho risolto questo problema utilizzando la libreria 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); 

Questo potrebbe essere più del necessario, ma funziona sicuramente cross-browser e slanciato fornisce una serie di utility extra e quindi è probabilmente merita di essere esaminata :)

0

sono stato in grado di aggiungere messa a fuoco per un DIV chiamando il focus() metodo incatenato al metodo attr()

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