gpt4 book ai didi

javascript - 如何使用 Javascript 或 Jquery 创建被点击元素的 Xpath?

转载 作者:行者123 更新时间:2023-11-30 14:17:36 26 4
gpt4 key购买 nike

我有一个网页,我在其中绑定(bind)了元素上的点击事件。当用户点击特定元素时。我想生成从 html 或 body 标记开始的元素的 XPath。即 “绝对 Xpath”

假设在下面的 html 示例中,我单击文本为“USA”的跨度,因此 Absolute Xpath 将是

/html[1]/body[1]/div[2]/div[1]/div[1]/span[1]
<html>
<body>
<div class="header">Countries</div>
<div class="row">
<div class="row_in">
<div class="row_in_in">
<span>India</span>
</div>
</div>
</div>
<div class="row">
<div class="row_in">
<div class="row_in_in">
<span>USA</span>
</div>
</div>
</div>
<div class="row">
<div class="row_in">
<div class="row_in_in">
<span>UK</span>
</div>
</div>
</div>
<div class="row">
<div class="row_in">
<div class="row_in_in">
<span>France</span>
</div>
</div>
</div>
</body>
</html>

我们是否有任何库可以帮助我生成我传递元素 Dom 的 XPath 并且它可以生成它?

我遇到了几个库,但它们有助于根据提供的 Xpath 检测 html 中的内容。

最佳答案

您需要遍历被点击的元素及其父元素来完成这项工作。所以你可以调用一个函数嵌套来完成这项工作。

var xpath;
$("*").click(function(e){
xpath = '';
addXpath($(this));
console.log(xpath);
e.stopPropagation();
});

function addXpath($ele){
var tagName = $ele[0].tagName.toLowerCase();
var index = $ele.parent().children(tagName).index($ele)+1;
xpath = '/'+tagName +'['+index+']'+ xpath;
!$ele.parent().is(document) ? addXpath($ele.parent()) : "";
}
body {background: green}
.header {background: orange}
.row_in {background: yellow}
.row_in_in {background: blue}
span {background: red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="header">Countries</div>
<div class="row">
<div class="row_in">
<div class="row_in_in">
<span>India</span>
</div>
</div>
</div>
<div class="row">
<div class="row_in">
<div class="row_in_in">
<span>USA</span>
</div>
</div>
</div>
<div class="row">
<div class="row_in">
<div class="row_in_in">
<span>UK</span>
</div>
</div>
</div>
<div class="row">
<div class="row_in">
<div class="row_in_in">
<span>France</span>
</div>
</div>
</div>

关于javascript - 如何使用 Javascript 或 Jquery 创建被点击元素的 Xpath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53300024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com