Я создаю 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, "<b>ins</b>")</button>
Что стандартное решение к этой проблеме? Это хорошо, если бы это только работает в IE8, но IE7-поддержка была бы хороша также.
В 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
по-прежнему не поддерживается, поэтому вам понадобится что-то вроде следующего: