Pada editor html, secara default, <p> </p> akan selalu muncul ketika menekan Enter. Tentu saja, menekan shift+enter dapat langsung menambahkan <br>, dan banyak orang berharap dengan menekan Enter akan menyebabkan <br> terbungkus bukannya merusak bagian.
Orang-orang menanyakan pertanyaan ini kepada saya, tetapi tanpa menulis tes kode, saya pikir saya bisa menilai dan menyelesaikannya dengan menilai event.keyCode==13 di onkeydown menggunakan metode ini. Maaf tentang itu! Oleh karena itu, setelah mempelajarinya dengan cermat, saya menemukan bahwa ada dua solusi, namun tidak ada yang sempurna, namun pada dasarnya dapat memenuhi kebutuhan:
1. Saat menginisialisasi konten editor, tambahkan "<div></div>"
Dengan cara ini, saat Anda menekan Enter, editor akan langsung menghasilkan "<div></div>" dan bukannya <p></p>, dan Anda cukup menggabungkan baris saja, bukan paragraf, seperti yang ditunjukkan di bawah ini:
Berikut isi kutipannya: <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"//Buka mode pengeditan idEditbox.document.write(sz) //Kode berikut hanya untuk membantu melihat kode sumber editor idEditbox.document.attachEvent (" onkeyup" , readsource ); idEditbox.document.attachEvent( "onkeydown" , readsource );}//Lihat fungsi kode sumber readsource(){ document.all.source.value=idEditbox.document.body.innerHTML; }//- -></SCRIPT><BODY ><iframe width="500" height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="Lihat sumber kode" >< BR><TEXTAREA NAME="source" ROWS="20" COLS="60"></TEXTAREA></BODY> |
tidak memadai:
Bug dengan metode ini adalah setelah menambahkan beberapa konten di editor, pilih semua (ctr+A) lalu hapus semua konten (ini juga akan menghapus <div></div>), masukkan kembali konten dan tekan Enter . Masih akan menghasilkan <p></p>
2. Proses langsung di onkeypress
Kita bisa langsung keluar di onkeypress, tapi saat menilai event.keyCode==13 yaitu saat menekan Enter, kita langsung masukkan tag <br> agar tidak terjadi masalah apapun yang terjadi. Berikut adalah contoh kode:
Berikut isi kutipannya: <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(){ //Catatan: Fungsi ini tidak akan berfungsi jika fokus tidak ada di editor; keyCode==13){ insertHTML("<br><!-- -->"); //Saya tidak tahu apakah ini masalah pada browser saya atau yang lainnya kursor tidak membungkus. Anda harus melampirkan tag lain, Anda dapat menghapusnya bersama-sama di akhir return false;//Dengan cara ini, carriage return setara dengan tidak valid, dan tag <p> yang mengganggu tidak akan ditambahkan}} //Masukkan fungsi html pada posisi kursor insertHTML(html){var sel = idEditbox.document.selection;if (sel!=null) { var rng = sel.createRange(); (html);}}//Lihat fungsi kode readsource(){ document.all.source value=idEditbox.document.body.innerHTML;}//--></SCRIPT><BODY ><iframe width="500 " height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="Lihat kode sumber" ><BR><TEXTAREA NAME="source" ROWS="20" COLS ="60"></TEXTAREA></BODY> |
tidak memadai:
1).insertHTML("<br><!-- -->"); akan menghasilkan kode sampah "<!-- -->";
2). Untuk memastikan bahwa fokus harus berada di editor untuk merespons peristiwa onkeypress editor, karena keterbatasan waktu, program contoh ini tidak menyediakan metode pemrosesan ketika fokus tidak ada di editor.