sortie en Chrome:contenteditable, mis caret à la fin du texte (cross-browser)
<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 en FF il ressemblerait à quelque chose comme ceci:
hey
<br />
what's up?
et dans IE:
hey
<p>what's up?</p>
Malheureusement, il n'y a pas de bonne façon de faire en sorte que chaque navigateur insère un <br />
au lieu d'un div ou p-tag, ou au moins je n'ai rien trouvé en ligne.
Quoiqu'il en soit, ce que je suis en train de faire maintenant, quand je frappe le bouton , je veux que le caret soit fixé à la fin du texte, il devrait donc ressembler à ceci:
hey
what's up?|
tout moyen de le faire pour que cela fonctionne dans tous les navigateur?
exemple:
$(document).ready(function()
{
$('#insert_caret').click(function()
{
var ele = $('#content');
var length = ele.html().length;
ele.focus();
//set caret -> end pos
}
}
Ne fonctionne pas avec Chrome car createTextRange n'est pas une fonction standard. Voir https://stackoverflow.com/a/41743191/700206. – Lee
@Lee: Cela fonctionne très bien dans Chrome, qui supporte 'window.getSelection' et' document.createRange'. La branche 'createTextRange' est pour les anciennes versions d'Internet Explorer. –
au moment de l'écriture 'window.getSelection' n'est pas supporté par 0.29% de tous les navigateurs (IE> 8). voir: http://caniuse.com/#search=window.getSelection – Silentdrummer