2017-11-13 16 views
0

私は、ここに掲載されたいくつかの同様の質問があることを知っていますが、誰も私の問題に答えるようではありませんでした(または、私はコンセプトをよく理解していないかもしれません)。私は、CKeditorインスタンス(質問はhereです)内でキャレットの位置を取得して設定することから始めました。助けを借りて、この目標を達成するために範囲とオフセットを使用する必要があることを理解しました。CKEditor 4:カーソル/キャレットの位置を保存して復元する方法は?

しかし私の問題は、どこかでこの位置を保存する方法、おそらくデータベースとキャレットの位置を復元する方法がわからないということです。ユーザーがドキュメントを修正して保存することを想像することができます。彼が版を続けるために戻ったとき、文書はロードされ、キャレットは最後の既知の位置に戻されます。

したがって、JavaScriptのCKeditorからキャレットの位置を取得するにはOKです。私は範囲オブジェクトを得ることができます。しかし、私はどのようにそれを保存するのですか?保存するためにサーバーに送信するにはどうすればよいですか?どうすれば元に戻すことができますか?文字列として? 範囲またはドミノノードを直列化および逆シリアル化するメカニズムはありますか?

ありがとうございました!

答えて

0

範囲またはドミノノードをシリアル化および逆シリアル化するメカニズムはありますか?

基本的には現在の範囲(選択)のブックマークを作成し、それがCKEDITOR.dom.range.moveToBookmark経由で復元することができますあなたはCKEDITOR.dom.range.createBookmarkを使用することができますCKEditorバージョン4でbookmarksと呼ばれるメカニズムは、があります。

ブックマークをシリアライズ可能にするに(あなたがDBにして、全体コンテンツを保存し、コンテンツがロードされたときに選択を復元することができます)、あなたはcreateBookmark(true)ようcreatBookmarktrueを渡す必要があり、これはブックマークノードがIDを含まなければならないことを示し、その範囲を復元するために使用できます。

+0

ありがとうございました。ブックマークを使用しようとしましたが、私の目的には適していないようです。それらはドキュメントに保存されていないので、ドキュメントを保存して再ロードした後に使用することができます。 – Xosted

+0

@Xostedそれらが維持されていないということは何を意味しますか?シリアライズされたブックマークを使用する場合は、エディタからデータをフェッチするときに保存する必要があります。 – f1ames

+0

もしそうなら、私は間違ったことをしているに違いない。ブックマークと文書の両方を保存した後、もう一度ブックマークにアクセスしようとすると失敗します。私はもう少しテストを行い、あなたにお返しします。 – Xosted

関連する問題