Hola, ocurre algo muy raro. Dependiendo del orden en el que coloque los elementos del formulario, el código no funciona correctamente en IE. El problema es que no imprime los tags en el lugar seleccionado.
Código PHP:
<html>
<head>
<title></title>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<script langage="javascript" type="text/javascript">
// Comprueba Navegador y Plataforma del pc
var clientPC = navigator.userAgent.toLowerCase(); // Coge info cliente
var clientVer = parseInt(navigator.appVersion); // Coge versión navegador
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;
var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);
function ListOrdenada() {
var txtarea = document.getElementById('texto')
var opcion= new Array();
var i,j
var suma = 0;
var Cursor = 0;
if ((clientVer >= 4) && is_ie && is_win) {
var theSelection = document.selection.createRange().text;
// IE
if (document.selection) {
txtarea.focus();
var Sel = document.selection.createRange();
Sel.moveStart ('character', -txtarea.value.length);
var SelEmpz = Sel.text.length;
var SelLargo = txtarea.value.length;
var s1 = (txtarea.value).substring(0,SelEmpz);
var s2 = (txtarea.value).substring(SelEmpz,SelLargo);
var SelFin = s1.length - theSelection.length; // caracteres que deja atrás
var s1_selec = (txtarea.value).substring(0,SelFin);
var abre = "[list=1]\n";
var cierra = "[/LIST=]";
if (!theSelection) {
alert("texto1 " +s1+ "\ntexto2 " +s2)
txtarea.value = s1 + abre + cierra + s2;
for (i=0; i<=opcion.length; i++) {
opcion[i]=prompt("Ingresa los elementos de la lista de uno en uno","");
if ((opcion[i]== null) || (opcion[i]== "undefined") || (opcion[i] == "") || (opcion[i] ==' ')) {
Cursor= s1.length + abre.length + suma + cierra.length;
return(Cursor);
}
txtarea.value = s1 + abre;
for (j=0; j<=i; j++) {
txtarea.value += "[*]" + opcion[j] + "\n";
}
txtarea.value += cierra + s2;
suma += (opcion[i].length+4);
}
}
if (theSelection) {
txtarea.value = s1_selec + abre;
opcion = theSelection.split(" ");
for (j=0; j<opcion.length; j++) {
txtarea.value += "[*]" + opcion[j] + "\n";
suma += (opcion[j].length+4);
}
txtarea.value += cierra + s2;
var Cursor = s1_selec.length + abre.length + suma + cierra.length;
return(Cursor);
}
}
}
// Firefox
else if (txtarea.selectionStart ||txtarea.selectionStart == '0')
SelEmpz = txtarea.selectionStart;
}
function PosicionCursor(pos) {
var txtarea = document.getElementById('texto')
if(txtarea.setSelectionRange) {
txtarea.focus();
txtarea.setSelectionRange(pos,pos);
}
else if (txtarea.createTextRange) {
var rango = txtarea.createTextRange();
rango.collapse(true);
rango.moveEnd('character', pos);
rango.moveStart('character', pos);
rango.select();
}
}
function InListaOrd()
{
PosicionCursor(ListOrdenada());
}
</script>
</head>
<body>
Así funciona
Código PHP:
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<form name="editexto">
<td><textarea id="texto" name="texto" rows="5" cols="31"></textarea></td>
</tr>
<tr>
<td><input type="button" id="Ordenar" onclick="InListaOrd();" value="LOrdenada" /></td>
</form>
</tr>
</table>
</body>
</html>
Pero si cambio el orden de los elemento que componen el formulario no funciona
Código PHP:
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<form name="editexto">
<td><input type="button" id="Ordenar" onclick="InListaOrd();" value="LOrdenada" /></td>
</tr>
<tr>
<td><textarea id="texto" name="texto" rows="5" cols="31"></textarea></td>
</form>
</tr>
</table>
</body>
</html>
¿Cuál puede ser el problema?
Gracias