Foros del Web » Programando para Internet » Javascript »

Insertar texto div contenteditable FireFox 11 no funciona

Estas en el tema de Insertar texto div contenteditable FireFox 11 no funciona en el foro de Javascript en Foros del Web. Hola: Con el código que muestro a continuación consigo insertar texto en la posición del cursor en IE8 pero no lo consigo en FireFox 11. ...
  #1 (permalink)  
Antiguo 10/04/2012, 03:53
 
Fecha de Ingreso: enero-2012
Ubicación: Madrid
Mensajes: 4
Antigüedad: 12 años, 3 meses
Puntos: 0
Insertar texto div contenteditable FireFox 11 no funciona

Hola:

Con el código que muestro a continuación consigo insertar texto en la posición del cursor en IE8 pero no lo consigo en FireFox 11. Lo más que he conseguido con esto es que el texto se inserta al principio del contenido.
Si le quito la línea
document.getElementById(divEditable).focus();
el texto se inserta donde hago click, fuera del div Editable.
He probado con execCommand('InnerHTML'... pero nada, no funciona

Agradeceré a quien me pueda orientar para que funcione en Firefox como en
IE8.

Saludos al foro.
-----------------------------------------------------------------------

function insertText(divEditable, strTexto) {
if (strTexto == "untexto"){
return 0;
}
//FF
if (window.getSelection) {
document.getElementById(divEditable).focus();
var sel, range, html;
//alert("FF, " + strTexto);
sel = window.getSelection();
range = sel.getRangeAt(0);
range.deleteContents();
range.insertNode(document.createTextNode(strTexto) );
}
//IE8
else {
var selRango;
document.getElementById(divEditable).focus();
selRango = document.selection.createRange();
selRango.pasteHTML(strTexto);
return false;
}
}
  #2 (permalink)  
Antiguo 14/04/2012, 05:18
 
Fecha de Ingreso: enero-2012
Ubicación: Madrid
Mensajes: 4
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Insertar texto div contenteditable FireFox 11 no funciona

Hola:

Finalmente he conseguido que en Firefox el texto se inserte en punto del cursor cuando el div de destino perdía el foco.

Para ello hay que memorizar la posición del cursor en una variable mediante una función:

//**************
var savedRange;
function saveSelection() {
if(window.getSelection)//navegadores no IE
{
savedRange = window.getSelection().getRangeAt(0);
}
}
//**************

Y ahora la función de insertar para FF quedaría de la siguiente manera:

//**************
...
else if (window.getSelection) {
var s = window.getSelection();
if (s.rangeCount > 0) s.removeAllRanges();
s.addRange(savedRange);
window.getSelection().addRange(savedRange);
document.execCommand("insertHTML", false, strTexto);
saveSelection();
return false;
}
...
//**************

Es decir, al terminar de hacer la inserción vuelvo a memorizar la posición del foco en el div editable.
Ahora mi duda es si IE9 ya funciona con este código o sigue con el de IE8.

Saludos al grupo.

Etiquetas: firefox, funcion, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:26.