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>
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>
Código Javascript:
Ver original
function 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?