Может ли `range.insertNode` быть отменен с помощью отмены браузера, в contenteditable div? - PullRequest
6 голосов
/ 17 декабря 2011

Я работаю над contenteditable div для создания простого RichText-редактора. Одно из требований, которое я имею, - это возможность вставлять html-чанк в положение курсора при событии кнопки.

Я смог заставить эту часть работать нормально, используя range, selection, range.insertNode(nodeHTML) или range.pasteHTML(nodeHTML) на основе браузера. Но я не мог получить две вещи, которые в идеале я хотел бы иметь

  1. Чтобы можно было отменить вставленный узел, используя отмену браузера. Почему-то браузер игнорирует вышеуказанные действия.
  2. Чтобы переместить курсор в конец вставленного узла. Так что пользователь может начать писать после

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

Спасибо.

1 Ответ

10 голосов
/ 17 декабря 2011

Ответ переписан Август 2013

К сожалению, нет, хотя ситуация улучшается.Программные DOM-мутации, отличные от тех, которые запускаются document.execCommand(), не попадают во встроенный в браузер стек отмены.Однако в последнее время произошли два события:

Пока ситуация не улучшится, вы можете использовать document.execCommand("InsertHTML", false, "<b>Some html</b>");, но это не поддерживается в IE.

...