0

我一直在尝试使用 iframe 实现富文本编辑器。

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

来自在内容可编辑的 div 中的插入符号处插入 html

在 Chrome 和 FF 上一切正常,但 IE(在 mo 中使用 IE10 - 但在早期版本模式中的结果相同)失败:

range.insertNode(frag);

给出以下错误:

SCRIPT5022:WrongDocumentError

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

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

但是,我不知道如何解决该错误。

任何帮助都会得到帮助...

4

2 回答 2

3

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

像这样的东西:

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

var frag = document.createDocumentFragment() // Wrong.
var frag = element.ownerDocument.createDocumentFragment() // Correct.
于 2013-06-24T18:56:51.873 回答
-1

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

于 2012-12-20T13:48:40.880 回答