Как анализировать редактируемый текст DIV с совместимостью с браузером

я проблема сcontenteditable разрывы строк на SAFARI / CHROME. Когда я нажимаю «возврат» на contentEditable<div>вместо создания<br> (как Firefox), они создают новый<div>:

<div>Something</div>
<div>Something</div>

Это выглядит следующим образом (на contentEditable DIV):

Something
Something

Но после санации (удаления<div>) Я получаю это:

SomethingSomething

В Firefoxcontenteditable является:

Something
<br>
Something

И это после санации выглядит так же:

Something
Something

Есть ли решение, чтобы "нормализовать" это через браузеры?

Я нашел этот код наСоздайте <br> вместо <div> </ div>, нажав Enter на предмете

$(function(){

  $("#editable")

  // make sure br is always the lastChild of contenteditable
  .live("keyup mouseup", function(){
    if (!this.lastChild || this.lastChild.nodeName.toLowerCase() != "br") {
      this.appendChild(document.createChild("br"));
     }
  })

  // use br instead of div div
  .live("keypress", function(e){
    if (e.which == 13) {
      if (window.getSelection) {
        var selection = window.getSelection(),
          range = selection.getRangeAt(0),
          br = document.createElement("br");
        range.deleteContents();
        range.insertNode(br);
        range.setStartAfter(br);
        range.setEndAfter(br);
        range.collapse(false);
        selection.removeAllRanges();
        selection.addRange(range);
        return false;
      }
    }
  });
});

Это работает, но(в САФАРИ и ХРОМЕ) Я должен дважды нажать клавишу «возврат», чтобы получить новую строку ...

Любая идея?

редактировать: С кодом, который я нашел (в нижней части этого вопроса) работает нормально, за исключением функции, которая "гарантирует<br> Элемент всегда lastChild ... Есть идеи, как это исправить?

Изменить 2: Я получаю эту ошибку на консоли:Uncaught TypeError: Object #<HTMLDocument> has no method 'createChild'

Изменить 3: Хорошо, я изменилdocument.createChild("br"); вdocument.createElement("br"); и я думаю, что он работает в FF / Safari / Chrome ... Все возвращаются<br> для новых линий ...

Проблема в том, что когда я нахожусь в упорядоченном или неупорядоченном списке, мне нужно получить новую строку без<br>...

Изменить 4: Если кто-то заинтересован в решении последней правки:Избегайте функции createElement, если она находится внутри элемента <LI> (contentEditable)

Ответы на вопрос(6)

Ваш ответ на вопрос