sortie dans Chrome :
<div id="content" contenteditable="true" style="border:1px solid #000;width:500px;height:40px;">
hey
<div>what's up?</div>
<div>
<button id="insert_caret"></button>
Je crois qu'en FF, cela ressemblerait à ceci:
hey
<br />
what's up?
et dans IE :
hey
<p>what's up?</p>
Malheureusement, il n'y a pas de moyen agréable de faire en sorte que chaque navigateur insère un <br />
tag au lieu d'un div ou d'un p, ou du moins je n'ai rien trouvé en ligne.
Quoi qu'il en soit, ce que j'essaie de faire maintenant, c'est que lorsque j'appuie sur le bouton , je veux que le curseur soit placé à la fin du texte, il devrait donc ressembler à ceci:
hey
what's up?|
un moyen de le faire pour qu'il fonctionne dans tous les navigateurs ?
exemple:
$(document).ready(function()
{
$('#insert_caret').click(function()
{
var ele = $('#content');
var length = ele.html().length;
ele.focus();
//set caret -> end pos
}
}
javascript
html
cross-browser
contenteditable
caret
Josh Crozier
la source
la source
Réponses:
La fonction suivante le fera dans tous les principaux navigateurs:
Placer le curseur au début est presque identique: il suffit de changer le booléen passé dans les appels à
collapse()
. Voici un exemple qui crée des fonctions pour placer le curseur au début et à la fin:la source
window.getSelection
etdocument.createRange
. LacreateTextRange
branche est destinée aux anciennes versions d'Internet Explorer.window.getSelection
n'est pas pris en charge par 0,29% de tous les navigateurs (IE> 8). voir: caniuse.com/#search=window.getSelectioneditablecontent="true"
...?placeCaretAtEnd(this);
ne fonctionnera pas pour moi.Malheureusement, l'excellente réponse de Tim n'a fonctionné pour moi que pour le placement à la fin, pour le placement au départ, j'ai dû le modifier légèrement.
Je ne sais pas si
focus()
etselect()
sont réellement nécessaires.la source
Cet exemple (en direct) montre une courte fonction simple
setCaretAtStartEnd
, qui prend deux arguments; Un nœud (modifiable) pour placer le curseur & un booléen indiquant où le placer (début ou fin du nœud)la source
Si vous utilisez le compilateur de fermeture google, vous pouvez faire ce qui suit (un peu simplifié de la réponse de Tim):
Voici la même chose dans ClojureScript:
J'ai testé cela dans Chrome, Safari et FireFox, pas sûr d'IE ...
la source