私のウェブサイトのユーザーが自分のウェブページ内のテキストを選択したとします。また、Webページのすべての要素にidがあるとします。
テキストに最も近い親ノードをデータベースに保存します。 その部分は簡単ですが、私はちょうど呼び出し:javascriptを使用して、親ノードからの選択範囲のオフセットを見つける方法
firstnode = rangeThatUserHighlighted.commonAncestorContainer;
if (firstnode.nodeType == 3) {
firstnode = firstnode.parentElement;
}
(3のここでのnodeTypeがcommonancestorが、私はそれの親を取得しなければならないことを意味テキストノード、であることを意味します。) 私はのIDを格納することができますデータベース内のそのノード。しかしそれは他の日に選択を再現するのに十分な情報ではありません。 (元のページだけでなく、HTMLの段落がBODY要素に関連した他の場所のいくつかの他のWebページに移動されている場合でも選択範囲を再作成する必要があります)
範囲にはオフセットがあります私は次のことができると思った。
コール:
rangeThatUserHighlighted.setStartBefore(firstnode);
、私は "rangeThatUserHighlighted.startOffset"(とendOffsetの)を救うことができます。
これは私には意味をなさない結果をもたらします。
私は、単に強調表示されるテキストを検索することも考えましたが、それは2つの理由で機能しません。私のパラグラフでは同じテキストが複数回出現することがあります。どのテキストがハイライト表示されるのかわかりません。第2に、BOLD、ITALICなどの書式タグがあり、正確な位置を捨てることがあります。
答えは何ですか?
ありがとうございました。
作業サンプルを提供してください、それは助けがより簡単になります – Dekel
それについての答えのトンがあります – dude