我一直在尝试使用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
然而,我不知道如何解决错误。
任何帮助都会令人满意......
答案 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()方法。