Заставьте contenteditable содержание быть внутри div или p - PullRequest
6 голосов
/ 08 октября 2011

Кто-нибудь знает, как заставить содержимое contenteditable div быть div или ap?Если содержимое объекта contenteditable является пустым div, то его выбор с помощью диапазона работает, например, в Firefox, но в chrome текст вставляется перед div.Мне нужен текст

HTML:
<div id="edit" contenteditable="true"><div id="insert"></div></div>

Tried this but the results are very inconsistent cross browser:

var range = document.createRange();
range.selectNodeContents(document.getElementById('insert'));

var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);

Второй вопрос здесь: если это как-то возможно для пустого contentEditable, может ли это также использоваться для ручной вставки новых строк, чтобы быть уверенным, что никогда не получиттеги вместо нового div или p?

Спасибо

Обновление

Кажется, в некоторой степени работает следующее:

<div id="edit" contenteditable="true"><div id="insert"><br/></div></div>

с дополнительнымFirefox, Chrome, Safari генерируют одну пустую строку, где весь ввод заканчивается в div, но Internet Explorer (тестированная версия 9) показывает две пустые строки.Если нет другого доступного решения - есть идеи, как это исправить, не используя обнаружение браузера?

1 Ответ

0 голосов
/ 12 октября 2011

Вы можете переопределить тег br в вашем CSS-файле.

br {
    display:block;
    clear: both;
    height: 1em;
    line-height: 1em;
}

Я не совсем уверен, будет ли работать em.Если нет, вам придется попробовать формат px.

...