salida en 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>
Creo que en FF se vería así:
hey
<br />
what's up?
y en IE :
hey
<p>what's up?</p>
desafortunadamente, no hay una buena manera de hacer que cada navegador inserte una <br />
etiqueta div o p en lugar de una etiqueta p, o al menos no pude encontrar nada en línea.
DE TODOS MODOS, lo que estoy tratando de hacer ahora es, cuando presiono el botón , quiero que el símbolo de intercalación se establezca al final del texto, por lo que debería verse así:
hey
what's up?|
alguna forma de hacer esto para que funcione en todos los navegadores ?
ejemplo:
$(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
fuente
fuente
Respuestas:
La siguiente función lo hará en todos los principales navegadores:
Colocar el signo de intercalación al principio es casi idéntico: solo requiere cambiar el booleano pasado a las llamadas a
collapse()
. Aquí hay un ejemplo que crea funciones para colocar el símbolo de intercalación al principio y al final:fuente
window.getSelection
ydocument.createRange
. LacreateTextRange
rama es para versiones antiguas de Internet Explorer.window.getSelection
este artículo no es compatible con el 0,29% de todos los navegadores (IE> 8). ver: caniuse.com/#search=window.getSelectioneditablecontent="true"
...?placeCaretAtEnd(this);
no funcionará para mí.Desafortunadamente, la excelente respuesta de Tim funcionó para mí solo para colocar al final, para colocar al principio tuve que modificarla ligeramente.
No estoy seguro de que si
focus()
yselect()
están realmente se necesita.fuente
Este ejemplo (en vivo) muestra una función simple y corta
setCaretAtStartEnd
, que toma dos argumentos; Un nodo (editable) para colocar el signo de intercalación y un booleano que indica dónde colocarlo (inicio o final del nodo)fuente
Si está utilizando el compilador de cierre de Google, puede hacer lo siguiente (algo simplificado de la respuesta de Tim):
Aquí es lo mismo en ClojureScript:
He probado esto en Chrome, Safari y FireFox, no estoy seguro de IE ...
fuente