I'm building a wysiwyg-editor with an editable iframe using document.execCommand()
. Now i need to use the "insertHTML"
command which works perfectly in Chrome and Firefox but of course it doesn't work in 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>
What is the standard solution to this problem? It's okay if it only works in IE8 but IE7-support would be nice too.
I know this is extremely old, but since IE is still a problem, here is a better way which does not even use
execCommand
.This is missing some checks, like ensuring you're in the right container to be adding an image.
In IE <= 10 you can use the
pasteHTML
method of theTextRange
representing the selection:UPDATE
In IE 11,
document.selection
is gone andinsertHTML
is still not supported, so you'll need something like the following:https://stackoverflow.com/a/6691294/96100
In case you haven't found anything yet,
I had a button that would add html into an iframe, and was causing an error in IE8 when I clicked the button and no text was selected (i.e. when I had the blinking caret). It turned out that the button itself was getting selected (despite having unselectable="on"), and causing javascript to throw up the error. When I changed the button to a div (with unselectable on) it worked fine, in IE8 and FF.
Hope this helps.