2010-10-11 20 views
7

J'ai une div contented qui doit être focalisée sur pageload (placer le curseur sur la première ligne).ContentEditable focus dans Chrome/Safari

document.getElementById("editor").focus() fonctionne bien dans Firefox et IE, mais dans Chrome/Safari, il sélectionne tout le contenu!

Existe-t-il un moyen de faire fonctionner correctement?

Merci à l'avance,
Shesh

+0

Il semble parcourir r limitation. Même avec la touche de tabulation, chaque fois que div [contenteditable] obtient le focus, il met en évidence le texte à l'intérieur. –

+0

Merci pour la réponse! Oui, il semble que ce soit aussi le cas avec TAB. :) – Sheshbabu

+0

+1 Quelqu'un a voté votre très bonne question. –

Répondre

2

Cette question ne peut être plus pertinent pour le questionneur, mais je vais y répondre pour les futurs lecteurs. Le principe de base consiste à définir la sélection sur une plage réduite au début de l'élément.

Je résolu ce problème en utilisant la bibliothèque 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); 

Cela peut être plus que ce qui est nécessaire, mais il fonctionne vraiment cross-browser et Rangy fournit un tas d'utilitaires supplémentaires et il est donc probablement dignes d'intérêt :)

0

j'ai pu ajouter le focus à un DIV en appelant la méthode mise au point() enchaîné à la méthode attr()

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