0

iframeを使用してリッチテキストエディタを実装しようとしています。

カーソル/選択範囲にhtmlを挿入するスクリプトについて、以下から少し助けを得ました。

contenteditabledivのcaretに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」は、コンテンツを編集可能に追加した要素です)。

このようなもの:

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のfalseブランチに従い、f(e.getSelection){...}古いcreateRange()メソッドに戻りました。

于 2012-12-20T13:48:40.880 に答える