Dom IE上的range.insertNode(frag)

Dom IE上的range.insertNode(frag),dom,iframe,rich-text-editor,internet-explorer-10,Dom,Iframe,Rich Text Editor,Internet Explorer 10,我一直在尝试使用iframe实现richtext编辑器 对于在光标/选项处插入html的脚本,我从以下内容获得了一些帮助: 从 在Chrome和FF上一切正常,但IE(在mo上使用IE10-但在早期的verion模式下结果相同)在以下方面失败: range.insertNode(frag) 给出以下错误: SCRIPT5022:错误文档错误 我发现以下链接详细说明了错误: 然而,我不知道如何解决这个错误 任何帮助都会很感激……我(有点)通过添加解决了这个问题。这导致脚本遵循if(e.getSe

我一直在尝试使用iframe实现richtext编辑器

对于在光标/选项处插入html的脚本,我从以下内容获得了一些帮助:

在Chrome和FF上一切正常,但IE(在mo上使用IE10-但在早期的verion模式下结果相同)在以下方面失败:

range.insertNode(frag)

给出以下错误:

SCRIPT5022:错误文档错误

我发现以下链接详细说明了错误:

然而,我不知道如何解决这个错误


任何帮助都会很感激……

我(有点)通过添加
解决了这个问题。这导致脚本遵循i
f(e.getSelection){…}
的假分支,恢复到旧的createRange()方法

您的代码正在主窗口的上下文中运行,但您正在尝试引用iframe的窗口和文档。用“element.ownerDocument”替换对“document”的任何引用,用“element.ownerDocument.parentWindow”替换对“window”的任何引用(其中“element”是您添加到其中的元素)

大概是这样的:

var selection = window.getSelection(); // Wrong.
var selection = element.ownerDocument.parentWindow.getSelection();  // Correct.

var frag = document.createDocumentFragment() // Wrong.
var frag = element.ownerDocument.createDocumentFragment() // Correct.

在ie11中遇到了这个问题。这个答案对我有效,是一个更好的解决方案。