IE上的range.insertNode(frag)

时间:2012-12-01 09:24:49

标签: dom iframe rich-text-editor internet-explorer-10

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

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

来自Insert html at caret in a contenteditable div

在Chrome和FF上一切都很好,但是IE(在mo上使用IE10 - 但在之前的verion模式中使用相同的结果)在以下情况下失败:

range.insertNode(FRAG);

给出以下错误:

SCRIPT5022:WrongDocumentError

我找到了以下链接,详细说明了错误:

http://msdn.microsoft.com/en-us/library/windows/apps/hh453166.aspx

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

任何帮助都会令人满意......

2 个答案:

答案 0 :(得分:3)

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

这样的事情:

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

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

答案 1 :(得分:-1)

我(有点)通过添加<meta http-equiv="x-ua-compatible" content="IE=8">来解决它。这导致脚本遵循i f(e.getSelection){...}的false分支,恢复到较旧的createRange()方法。