1

更新:この質問は、テキストを強調表示して、後でロードできるようにその強調表示をデータベースに保存するためのより大きな取り組みの一部でした。

ここで使用されているコードに従っています:JSON を使用した範囲オブジェクトデータベースに保存するためにユーザーが選択したテキストの位置をキャプチャして、ajax呼び出しで復元しようとしています。

まず、取得しているxpathを次のようにします

endXPath: "/HTML[1]/BODY[1]/DIV[1]/DIV[5]/P[3]/text()[1]"

このように見えるために

endXPath: "/DIV[5]/P[3]/text()[1]"

ここで、最初の例のDIV[1]のIDは「コンテンツ」です。

この道はこの機能から来ていると思います

function makeXPath (node, currentPath) {
  /* this should suffice in HTML documents for selectable nodes, XML with namespaces needs     more code */
  currentPath = currentPath || '';
  switch (node.nodeType) {
    case 3:
    case 4:
      return makeXPath(node.parentNode, 'text()[' + (document.evaluate('preceding-sibling::text()', node, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength + 1) + ']');
    case 1:
      return makeXPath(node.parentNode, node.nodeName + '[' + (document.evaluate('preceding-sibling::' + node.nodeName, node, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength + 1) + ']' + (currentPath ? '/' + currentPath : ''));
    case 9:
      return '/' + currentPath;
    default:
      return '';
  }
}

これまで読んだことから、contextNodeを変更する必要があると思いますか?しかし、それを達成する方法もわかりません。

4

1 に答える 1

1

この呼び出しAnnotatorを実現する JQuery プラグインがあります。ハイライト、ハイライトの保存、およびハイライトに関するコメントの追加のための機能がすべて組み込まれています。

于 2012-12-30T00:56:37.770 に答える