为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Javascript计算元素的XPath位置?

如何使用Javascript计算元素的XPath位置?

假设我有一个包含不同类型标签的大型HTML文件,类似于您现在正在查看的StackOverflow。现在让我们说你单击页面上的一个元素,Javascript函数会是什么样的,它会计算引用该特定元素的最基本的XPath?我知道在XPath中有一种无限的方式来引用该元素,但我正在寻找一些只关注DOM树的东西,而不考虑ID,类等。例:<html><head><title>Fruit</title></head><body><ol>  <li>Bananas</li>  <li>Apples</li>  <li>Strawberries</li></ol></body></html>假设您点击苹果。Javascript函数将返回以下内容:/html/body/ol/li[2]它基本上只是向上运行DOM树一直到HTML元素。只是为了澄清,'on-click'事件处理程序不是问题。我能做到这一点。我只是不确定如何计算元素在DOM树中的位置并将其表示为XPath。PS赞赏使用或不使用JQuery库的任何答案。PPS我对XPath完全不熟悉,所以我甚至可能在上面的例子中犯了一个错误,但你会明白这个想法。
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

我用来获取类似于你的情况的XPath的函数,它使用jQuery:


function getXPath( element )

{

    var xpath = '';

    for ( ; element && element.nodeType == 1; element = element.parentNode )

    {

        var id = $(element.parentNode).children(element.tagName).index(element) + 1;

        id > 1 ? (id = '[' + id + ']') : (id = '');

        xpath = '/' + element.tagName.toLowerCase() + id + xpath;

    }

    return xpath;

}


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 590 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信