1

私がやりたいこと :

->プレーンなHTMLページをユーザーに表示する->ユーザーはそのページのテキストを強調表示することができます->ユーザーが次回ログインしたときに、ページ上の以前の(複数の)強調表示を取得して表示できるはずです。

私がしたこと :

Library / API:Rangyを使用しました。このiamを使用すると、テキストを選択して、ユーザーの好みの色で強調表示できます。

問題 :

シリアル化および逆シリアル化機能を試しましたが、(ページがリロードされた後に)逆シリアル化しようとすると、次のようなエラーが発生します。

シリアル化された範囲のルートノード(ec0c8cf0)とターゲットルートノード(d4997863)のチェックサムが一致しません

ページをリロードするたびに、新しいルートノードがあります。この場合、逆シリアル化を修正するにはどうすればよいですか?

JS-Fiddleを作成しましたdemo / js-fiddle

これは何ですか-デモを確認すると、説明の最初の単語、つまり「お願いします」を選択します。テキストが強調表示され、シリアルも次のように表示されます。

0/3/1/3/0/1/1/2:9,0 / 3/1/3/0/1/1/2:9 {b3002d92}

だから私がしたことは、このシリアルをハードコーディングして、このようなページonLoad関数のdeserializeSelection関数に入れました:-

rangy.deserializeSelection('0/3/1/3/0/1/1/2:9,0/3/1/3/0/1/1/2:9{b3002d92}');

技術的には、ページが読み込まれるたびに、説明の中で「お願いします」を強調表示する必要があります。ただし、そうではありません。代わりに、上記のエラーをブロックで表示します。これを解決するのを手伝ってくれませんか。お願いします。ありがとう

追加:

1.私はrangyのシリアル化と逆シリアル化の方法を本当に理解していません。

2.ここからの私の非常に抽象的なロードマップは、ページのロード時にAJAX呼び出しを実行し、データベースからこのページのユーザーのすべての(シリアル化された)選択をフェッチし、それらを反復処理して逆シリアル化することです。

どんな助けでも、本当にありがたいです。ありがとうございました。

4

1 に答える 1

0

What I think is you should try this:

var selObj = rangy.getSelection();
var se = rangy.serializeSelection(selObj, true); //true to avoid DOM checksum
于 2013-01-22T04:14:13.500 に答える