2013-12-12 3 views
7

Я попытался следующий код на Chrome:Как работает execCommand "insertBrOnReturn"?

document.execCommand("insertBrOnReturn", false, true); 

http://jsfiddle.net/uVcd5/

Wether Я установил последний параметр истинным или ложным, поведение не меняется: на возврат, будут добавлены новые <div> элементы.

Должно быть, что-то пропустили ... любые идеи?

ответ

9

insertBrOnReturn - специфический cmd для Mozilla, Chrome не поддерживает это. Вы можете проверить, что с:

document.queryCommandSupported('insertBrOnReturn') 

jsFiddle here, это предупредит "правду" в Firefox, но "ложь" в Chrome.

Если вы хотите вставить только бр, попробуйте:

document.execCommand('insertHTML', false, '<br><br>'); 

Кроме того, проверить это: Prevent contenteditable adding <div> on ENTER - Chrome

+0

Интересно, почему Chrome не вставляет новые элементы P по умолчанию при возврате вместо DIV. Вы могли бы знать причину этого? – Matthew

+0

На самом деле вы можете сделать P разделителем абзацев следующим: document.execCommand ('defaultParagraphSeparator', false, 'p'); Также он работает только для DIV и P. – Andrew

2

Я наткнулся на этот ответ, но не нравится, как в Chrome, если курсор находится на начало абзаца добавляет два перерыва. Изменение второго <br> на \u200C делает Chrome работать отлично, а не столько для Safari.

document.execCommand("insertHTML", false, "<br>\u200C"); 

Что такое \u200c? Не знаете. Нашел здесь ссылку.

Dealing with line Breaks on contentEditable DIV

+1

U + 200C - это не присоединительный стоп с нулевой шириной, как и пространство нулевой ширины U + 200B. Обратите внимание, что если пользователь будет перемещаться с помощью клавиш со стрелками, он будет иметь видимый эффект, пользователю потребуется дважды нажать, чтобы перейти к любой его стороне. – Raybiez

Смежные вопросы