gpt4 book ai didi

javascript - 如何获取 Javascript 中给定元素的非绝对 css 路径?

转载 作者:行者123 更新时间:2023-11-28 13:59:39 24 4
gpt4 key购买 nike

我希望能够使用 Javascript 获取元素的非绝对 css 路径,以便我随后可以调用:

document.querySelectorAll()

我正在尝试从共享相同 css 路径 的页面中获取所有元素。

例如使用 Google 的搜索结果页面:

  1. CSS 选择器(绝对)是:
div.g:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > a:nth-child(1) > h3:nth-child(1) > div:nth-child(1)
  1. CSS 路径(非绝对路径)为:
html body#gsr.srp.tbo.vasq div#main div#cnt div.mw div#rcnt div.col div#center_col div#res.med div#search div div#rso div.bkWMgd div.srg div.g div div.rc div.r a h3.LC20lb div.ellip

我看到的每个答案通常都会返回元素的绝对路径(css 选择器)——即第 n 个子元素。例如:Get CSS path from Dom element .

有没有人知道如何获得适用于页面上多个元素的纯 css 路径?

编辑:我真正要找的是 Firefox Web Developer Inspector 工具中的源代码,您可以在其中右键单击并选择“复制 CSS 路径”。如果有人对此有指点,我将不胜感激。

最佳答案

这有点困难,因为您必须决定所需的特异性级别。您可以选择包含或忽略标签、ID、类和属性,所有这些都有自己的格式。我已经编写了一个函数来为您执行此操作。

nonabsoluteCSS()接受任何元素和 bool 值,以确定是否包含元素的标签名称、类、id 和属性。它是递归的,将爬上 DOM 树,直到它到达 <body>。元素。

如果您想了解伪元素和 sibling 等内容,您可以进一步扩展此功能,但这应该是一个很好的起点。

$(function(){
$("a").click(function(){
console.log(nonabsoluteCSS(this, true, true, true, true));
});
});

function nonabsoluteCSS(elm, useElements, useClasses, useIds, useAttributes)
{
if($(elm).length < 1)
return false;

var p = $(elm).parent()[0];
var e = $(elm)[0];

var output = "";

if(!useElements && !useClasses && !useIds && !useAttributes)
output = "*";
else
{
if(useElements)
output += e.tagName.toLowerCase();
if(useClasses)
{
for(var i = 0; i < e.classList.length; i++)
output += "."+e.classList[i];
}
if(useIds && e.id != "")
output += "#"+e.id;
if(useAttributes)
{
for(var i = 0; i < e.attributes.length; i++)
{
output += "["+e.attributes[i].name+"=\""+e.attributes[i].value+"\"]";
}
}
}

if(p.tagName.toLowerCase() != "body")
{
return nonabsoluteCSS(p, useClasses, useIds, useAttributes) + " " + output;
}
else
{
return output;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<p class="class1">
<span class="class2 class3" id="spanid">
<a href="#">
Click me to see my CSS path.
</a>
</span>
</p>
</div>

关于javascript - 如何获取 Javascript 中给定元素的非绝对 css 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57932398/

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