En el editor HTML, de forma predeterminada, <p> </p> siempre aparecerá al presionar Enter. Por supuesto, presionar shift+enter puede agregar <br> directamente, y muchas personas esperan que presionar Enter haga que <br> se ajuste. en lugar de romperse.
La gente me ha estado haciendo esta pregunta, pero sin escribir una prueba de código, pensé que podía juzgarla y resolverla juzgando event.keyCode==13 en onkeydown, pero luego descubrí que nadie parecía poder resolverla con éxito. usando este método. ¡Lo lamento! Por esta razón, después de un estudio cuidadoso, encontré que existen dos soluciones, pero ninguna es perfecta, pero básicamente puede satisfacer las necesidades:
1. Al inicializar el contenido del editor, agregue "<div></div>"
De esta manera, cuando presionas Enter, el editor generará directamente "<div></div>" en lugar de <p></p>, y puedes simplemente ajustar la línea en lugar del párrafo, como se muestra a continuación:
El siguiente es el contenido citado: <SCRIPT LANGUAGE="javascript"><!--function initeditor(){ var L_DEFAULTHTML_TEXT="<DIV></DIV>"; var sz="" sz+="<BODY ONCONTEXTMENU="return false">" +L_DEFAULTHTML_TEXT+"</BODY>" idEditbox.document.designMode="on"//Modo de edición abierto idEditbox.document.write(sz) //El siguiente código es solo para ayudar a ver el código fuente del editor idEditbox.document.attachEvent ("onkeyup", readsource); idEditbox.document.attachEvent ("onkeydown", readsource);}// Mira la función del código fuente readsource(){ document.all.source.value=idEditbox.document.body.innerHTML; }//- -></SCRIPT><BODY ><iframe width="500" height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="Ver código fuente código" >< BR><TEXTAREA NAME="fuente" ROWS="20" COLS="60"></TEXTAREA></BODY> |
insuficiente:
Un error con este método es que después de agregar algo de contenido en el editor, seleccione todo (ctr+A) y luego elimine todo el contenido (esto también eliminará <div></div>), vuelva a ingresar el contenido y presione Enter. . Seguirá produciendo <p></p>.
2. Procéselo directamente en onkeypress
Podemos salir directamente en onkeypress, pero al juzgar event.keyCode == 13, es decir, al presionar Enter, insertamos directamente la etiqueta <br>, para que no ocurra ningún problema pase lo que pase. Aquí hay un ejemplo de código:
El siguiente es el contenido citado: <SCRIPT LANGUAGE="javascript"><!--function initeditor(){ var sz="" sz+="<BODY ONCONTEXTMENU="return false"></BODY>" idEditbox.document.designMode="on" idEditbox.document.write(sz) idEditbox.document.onkeypress=fnKeypress}function fnKeypress(){ //Nota: esta función no funcionará si el foco no está en el editor; keyCode==13){ insertHTML("<br><!-- -->"); //No sé si es un problema con mi navegador o algo más. Solo se inserta la etiqueta <br> y el. el cursor no se ajusta. Debes adjuntar otras etiquetas, puedes eliminarlas juntas al final return false;// De esta manera, el retorno de carro es equivalente a no válido y no se agregará la molesta etiqueta <p>}} //Inserta la función html en la posición del cursor insertHTML(html){var sel = idEditbox.document.selection;if (sel!=null) { var rng = sel.createRange(); if (rng!=null) rng.pasteHTML; (html);}}//Ver código función readsource(){ document.all.source value=idEditbox.document.body.innerHTML;}//--></SCRIPT><BODY ><iframe width="500 " height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="Ver código fuente" ><BR><TEXTAREA NAME="source" ROWS="20" COLS ="60"></TEXTAREA></BODY> |
insuficiente:
1).insertHTML("<br><!-- -->"); generará código basura "<!-- -->";
2) Para garantizar que el foco debe estar en el editor para responder al evento de pulsación de tecla del editor, debido a limitaciones de tiempo, este programa de muestra no proporciona un método de procesamiento cuando el foco no está en el editor.