更新:この質問は、テキストを強調表示して、後でロードできるようにその強調表示をデータベースに保存するためのより大きな取り組みの一部でした。
ここで使用されているコードに従っています: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を変更する必要があると思いますか?しかし、それを達成する方法もわかりません。