0

thisのフォローアップの質問です。iframe 内のテキストの選択をシリアル化し、それを復元したいのですが、「Uncaught Error: deserializeRange: checksums of serialized range root node (XXXXX) and target root node (XXXXX) do not match」というエラーが表示されます。

var iframe = $("iframe")[0];
var selection = rangy.getSelection(iframe);
var serializeSelection = rangy.serializeSelection(selection);
alert(serializeSelection);
rangy.deserializeSelection(serializeSelection);

デモ: http://jsfiddle.net/codef0rmer/2d6Bk/1/

4

2 に答える 2

1

3 番目のパラメーターとしてウィンドウ オブジェクトを指定する必要があります。

rangy.deserializeSelection(serializeSelection, null, iframe.contentWindow);

デモ: http://jsfiddle.net/2d6Bk/2/

これは、必要以上に厄介です。iframeバージョン 1.3 ではではなくを使用できるようになりましiframe.contentWindowたが、まだ読みにくいので、これを何とか改善します。

于 2012-07-22T17:26:42.800 に答える
0

「キャッチされないエラー: deserializeRange: シリアル化された範囲ルート ノード (XXXXX) とターゲット ルート ノード (XXXXX) のチェックサムが一致しません」エラーについて:

Rangey シリアライゼーションとデシリアライゼーションは、同じ形式とタイプのテキストに対して実行する必要があります。逆シリアル化中に、テキスト、フォーマット、または css が変更されることがあります。そのため、テキストに注意する必要があります。iframe を使用しているため、テキストが iframe に読み込まれた後にメソッドを 1 回呼び出します。私たちが行っている間違いは、ページの読み込み後にテキストをシリアル化し、逆シリアル化中に、iframe の読み込み後にテキストを逆シリアル化しようとすることです。逆シリアル化を開始する前に、iframe にコンテンツが読み込まれているかどうかを確認してください。

于 2014-05-28T03:43:50.453 に答える