document.addEventListener("click", function (clickEvent) {
let target = clickEvent.target;
readXPath(target)
});
function readXPath(el) {
// jq路径
// if (!el) {
// return;
// }
// let stack = [];
// let isShadow = false;
// while (el.parentNode != null) {
// let sibCount = 0;
// let sibIndex = 0;
// for ( let i = 0; i < el.parentNode.childNodes.length; i++ ) {
// let sib = el.parentNode.childNodes[i];
// if ( sib.nodeName === el.nodeName ) {
// if ( sib === el ) {
// sibIndex = sibCount;
// }
// sibIndex = sibCount;
// sibCount++;
// }
// }
// let nodeName = el.nodeName.toLowerCase();
// if (isShadow) {
// nodeName += "::shadow";
// isShadow = false;
// }
// if ( sibCount > 1 ) {
// stack.unshift(nodeName + ':eq(' + (sibIndex + 1) + ')');
// } else {
// stack.unshift(nodeName);
// }
// el = el.parentNode;
// if (el.nodeType === 11) {
// isShadow = true;
// el = el.host;
// }
// }
// return stack.join(' > ');
// 标准CSS路径
if (!(el instanceof Element))
return;
let path = [];
while (el.nodeType === Node.ELEMENT_NODE) {
let selector = el.nodeName.toLowerCase();
if (el.id) {
selector += '#' + el.id;
path.unshift(selector);
break;
} else {
let sib = el, nth = 1;
while (sib = sib.previousElementSibling) {
if (sib.nodeName.toLowerCase() == selector)
nth++;
}
if (nth != 1)
selector += ":nth-of-type("+nth+")";
}
path.unshift(selector);
el = el.parentNode;
}
return path.join(" > ");
}
js 获取dom树 或 css路径
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Web UI 自动化其实就是在页面元素,所以在真正进入页面元素操作之前,我们先认识下我们后面会用到的一些HTML相...
- 一、js获取当前域名有2种方法 1、方法一 var domain = document.domain; 2、...