如何使用Javascript获取相对Xpath
更新:这个问题是试图突出显示文本并将突出显示的文本存储在数据库中以便稍后加载的更大努力的一部分 我遵循这里使用的代码: 我试图捕获用户选择的文本位置,将其存储在数据库中,然后通过ajax调用进行恢复 首先,我想让我得到的xpath看起来像这样如何使用Javascript获取相对Xpath,javascript,xpath,Javascript,Xpath,更新:这个问题是试图突出显示文本并将突出显示的文本存储在数据库中以便稍后加载的更大努力的一部分 我遵循这里使用的代码: 我试图捕获用户选择的文本位置,将其存储在数据库中,然后通过ajax调用进行恢复 首先,我想让我得到的xpath看起来像这样 endXPath: "/HTML[1]/BODY[1]/DIV[1]/DIV[5]/P[3]/text()[1]" endXPath: "/DIV[5]/P[3]/text()[1]" 像这样 endXPath: "/HTML[1]/BODY[1]/D
endXPath: "/HTML[1]/BODY[1]/DIV[1]/DIV[5]/P[3]/text()[1]"
endXPath: "/DIV[5]/P[3]/text()[1]"
像这样
endXPath: "/HTML[1]/BODY[1]/DIV[1]/DIV[5]/P[3]/text()[1]"
endXPath: "/DIV[5]/P[3]/text()[1]"
其中,第一个示例中的DIV[1]的ID为“content”
我相信这条路就是从这个功能来的
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?但是我也不知道如何实现这一点。有一个JQuery插件可以完成这个调用。它已经内置了用于突出显示、存储突出显示和添加有关突出显示的注释的所有内容。有一个JQuery插件可以完成此调用。它已经内置了突出显示、存储突出显示和添加有关突出显示的注释的所有内容