Buenas foros del web, tengo un pequeño problema...
Me di cuenta de una forma para crear un editor WYSIWYG, no es dificil, son dos archivos, el primero index.html que es donde esta el editor, tengo este codigo:
Código HTML:
<table border="0" width="100%">
<tr>
<td><a href="javascript:window.frames['editor'].link();">Insertar Enlace</a></td>
<td><a href="javascript:window.frames['editor'].html('b')">Negrita</a></td>
</tr>
<tr>
<td colspan="2">
<iFrame src="editor.html" style="width:80%;height:250px" id="editor" name="editor"></iFrame>
</td>
</tr>
</table>
Luego el codigo del iFrame:
Código HTML:
<html>
<head>
<script type="text/javascript">
<!--
function iniciar()
{
document.body.contentEditable='true';
document.designMode='on';
}
function link()
{
var url = prompt('Ingresa la url del enlace','');
var texto = prompt('Ingresa el texto del enlace','');
var linkgl = document.createElement('a');
linkgl.href = url;
linkgl.target = '_blank';
linkgl.innerHTML = texto;
document.body.appendChild(linkgl);
}
-->
</script>
</head>
<body onload="iniciar()">
</body>
</html>
El codigo del enlace funciona perfecto, y ademas se puede escribir del documento y pegar texto desde word con formato y todo, ahora el problema esta en que estoy intentando editar la funcion para bbcode que esta en este foro, y no encuentro la forma, logre que funcione la negrita pero no con el texto seleccionado, sino que crea una frase nueva "Texto de ejemplo" y lo pone en negrita, pero no le hace caso a la seleccion, este es el codigo:
Código Javascript
:
Ver originalfunction html(tag)
{
var input = document.body;
if (typeof document.selection != 'undefined' && document.selection)
{
var str = document.selection.createRange().text;
input.focus();
var sel = document.selection.createRange();
var objeto = document.createElement(tag);
objeto.innerHTML = str;
sel.text = objeto;
sel.select();
return;
}
else if (typeof input.selectionStart != 'undefined')
{
var start = input.selectionStart;
var end = input.selectionEnd;
var insText = input.innerHTML.substring(start, end);
var objeto = document.createElement(tag);
objeto.innerHTML = insText;
input.innerHTML = input.innerHTML.substr(0, start) + objeto + input.innerHTML.substr(end);
input.focus();
input.setSelectionRange(start+2+tag.length+insText.length+3+tag.length,start+2+tag.length+insText.length+3+tag.length);
return;
}
else
{
var objeto = document.createElement(tag);
objeto.innerHTML = 'Texto de ejemplo';
input.appendChild(objeto);
return;
}
iniciar();
}
Como ven, no le hace caso a los ifs ni nada, cual puede ser el problema?