Настройка Contenteditable поведения с помощью javascript

В настоящее время в firefox, когда я нажимаю return в содержательном абзаце, он вставляет тег br, создает новый тег абзаца, а затем помещает тег br внутри этого нового абзаца. Я хотел бы изменить поведение таким образом, чтобы

  • Shift + enter = br tag (это уже значение по умолчанию)
  • Enter дублирует текущий элемент, будь то p, li, h1..etc, и удаляет любые конечные или ведущие ( спецификация W3C требует некоторых событий, которые я мог бы использовать, но я совершенно не уверен, как их реализовать.
  • Backspace в начале элемента объединит его с предыдущим братом, если он существует
  • Удалить в конце элемента объединит его со следующим родственным братом, если он существует.

Я попытался захватить нажатие клавиш и проверка клавиш возврата, удаления и возврата, но я не могу точно определить текущую позицию курсора или предотвратить поведение по умолчанию, если я его переопределяю.

Я считаю, что это очень полезно, если кто-то знает как ..

Возможно, кто-то даже знает пользовательский агент (браузер), который уже ведет себя подобным образом. Это приемлемо.

Спасибо,

Даниэль

7
задан Daniel 18 April 2011 в 18:53
поделиться