В редакторе HTML по умолчанию <p> </p> всегда отображается при нажатии Enter. Конечно, нажатие Shift+Enter может напрямую добавить <br>, и многие люди надеются, что нажатие Enter приведет к переносу <br>. вместо того, чтобы сломать часть.
Люди задавали мне этот вопрос, но, не написав теста кода, я думал, что смогу оценить и решить его, оценив event.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. Обработать его прямо в onkeypress
Мы можем выйти прямо в onkeypress, но при оценке event.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; keyCode==13){insertHTML("<br><!-- -->"); //Я не знаю, проблема ли это в моем браузере или в чем-то другом. Вставляется только тег <br>. курсор не переносится. Вы должны прикрепить другие теги, вы можете удалить их вместе в конце return false;//В этом случае возврат каретки эквивалентен недействительному, и раздражающий тег <p> не будет добавлен.}} // Вставьте функцию HTML в позицию курсора. (html);}}//Просмотр функции кода 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) Чтобы гарантировать, что фокус должен находиться в редакторе, чтобы реагировать на событие onkeypress редактора, из-за ограничений по времени этот пример программы не предоставляет метод обработки, когда фокус не находится в редакторе.