execCommand (“insertHTML”, …) в Internet Explorer

Я создаю WYSIWYG-редактор с доступным для редактирования использованием iframe document.execCommand(). Теперь я должен использовать "insertHTML" команда, которая работает отлично в Chrome и Firefox, но конечно это не работает в Internet Explorer:

function run() {
  document.getElementById("target").focus();
  document.execCommand("insertHTML", false, "<b>ins</b>");
}
<div contenteditable id="target">contenteditable</div>
<button onclick="run()">contenteditable.focus() + document.execCommand("insertHTML", false, "&lt;b>ins&lt;/b>")</button>

Что стандартное решение к этой проблеме? Это хорошо, если бы это только работает в IE8, но IE7-поддержка была бы хороша также.

8
задан Nickolay 1 January 2018 в 11:01
поделиться

1 ответ

В IE <= 10 вы можете использовать метод pasteHTML для TextRange , представляющий выделение:

var doc = document.getElementById("your_iframe").contentWindow.document;

if (doc.selection && doc.selection.createRange) {
    var range = doc.selection.createRange();
    if (range.pasteHTML) {
        range.pasteHTML("<b>Some bold text</b>");
    }
}

UPDATE

В IE 11 document.selection больше нет, а insertHTML по-прежнему не поддерживается, поэтому вам понадобится что-то вроде следующего:

https://stackoverflow.com/a / 6691294/96100

15
ответ дан 5 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: