في محرر HTML، سيظهر <p> </p> دائمًا عند الضغط على Enter. بالطبع، يمكن أن يؤدي الضغط على Shift+enter إلى إضافة <br> مباشرةً، ويأمل الكثير من الأشخاص أن يؤدي الضغط على Enter إلى التفاف <br> بدلا من كسر الجزء.
لقد سألني الناس هذا السؤال، ولكن دون كتابة اختبار الكود، اعتقدت أنه يمكنني الحكم عليه وحله من خلال الحكم على الحدث.keyCode==13 في onkeydown، لكنني وجدت لاحقًا أنه لا يبدو أن أحدًا قادر على حله بنجاح باستخدام هذه الطريقة. آسف لذلك! لهذا السبب، بعد دراسة متأنية، وجدت أن هناك حلين، لكن أيًا منهما ليس مثاليًا، ولكنه يمكن أن يلبي الاحتياجات بشكل أساسي:
1. عند تهيئة محتوى المحرر، أضف "<div></div>"
بهذه الطريقة، عندما تضغط على Enter، سيقوم المحرر مباشرة بإنشاء "<div></div>" بدلاً من <p></p>، ويمكنك فقط لف السطر بدلاً من الفقرة، كما هو موضح أدناه:
وفيما يلي المحتوى المقتبس: <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"// فتح وضع التحرير idEditbox.document.write(sz) // الكود التالي هو فقط للمساعدة في عرض الكود المصدري للمحرر idEditbox.document.attachEvent ( "onkeyup" , readsource ); idEditbox.document.attachEvent( "onkeydown" , readsource );}// انظر إلى الكود المصدري function readsource(){ document.all.source.value=idEditbox.document.body.innerHTML; }//- -></SCRIPT><BODY ><iframe width="500" height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="عرض المصدر كود" >< BR><TEXTAREA NAME="source" ROWS="20" COLS="60"></TEXTAREA></BODY> |
غير كافٍ:
الخطأ في هذه الطريقة هو أنه بعد إضافة بعض المحتوى في المحرر، حدد الكل (ctr+A) ثم احذف كل المحتوى (سيؤدي هذا أيضًا إلى حذف <div></div>)، وأعد إدخال المحتوى واضغط على Enter سيستمر في إنتاج <p></p>
2. قم بمعالجتها مباشرة بالضغط على المفتاح
يمكننا الخروج مباشرة عند الضغط على المفتاح، ولكن عند الحكم على events.keyCode==13، أي عند الضغط على Enter، نقوم بإدخال علامة <br> مباشرة، حتى لا تحدث أي مشكلة مهما كانت المشكلة. فيما يلي مثال على الكود:
وفيما يلي المحتوى المقتبس: <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(){ // ملاحظة: لن تعمل هذه الوظيفة إذا لم يكن التركيز في المحرر var ev = idEditbox.event if(ev. keyCode==13){ InsertHTML("<br><!-- -->"); // لا أعرف ما إذا كانت هذه مشكلة في متصفحي أو في شيء آخر لا يلتف المؤشر. يجب عليك إرفاق علامات أخرى، ويمكنك حذفها معًا في النهاية return false;// بهذه الطريقة، يكون إرجاع السطر غير صالح، ولن تتم إضافة العلامة <p> المزعجة}} // أدخل وظيفة html في موضع المؤشر InsertHTML(html){var sel = idEditbox.document.select;if (sel!=null) { var rng = sel.createRange(); if (rng!=null) rng.pasteHTML (html);}}// عرض الكود function readsource(){ document.all.source value=idEditbox.document.body.innerHTML;}//--></SCRIPT><BODY ><iframe width="500 " height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="عرض كود المصدر"><BR><TEXTAREA NAME="source" ROWS="20" COLS ="60"></TEXTAREA></BODY> |
غير كافٍ:
1).insertHTML("<br><!-- -->"); سيؤدي إلى إنشاء رمز غير مرغوب فيه "<!-- -->";
2). للتأكد من أن التركيز يجب أن يكون في المحرر من أجل الاستجابة لحدث الضغط على المفتاح للمحرر، نظرًا لضيق الوقت، لا يوفر نموذج البرنامج هذا طريقة معالجة عندما لا يكون التركيز في المحرر.