我得到了这个函数来获取 cssPath :
var cssPath = function (el) {
var path = [];
while (
(el.nodeName.toLowerCase() != 'html') &&
(el = el.parentNode) &&
path.unshift(el.nodeName.toLowerCase() +
(el.id ? '#' + el.id : '') +
(el.className ? '.' + el.className.replace(/\s+/g, ".") : ''))
);
return path.join(" > ");
}
console.log(cssPath(document.getElementsByTagName('a')[123]));
但我得到了这样的东西:
html > body > div#div-id > div.site > div.clearfix > ul.choices > li
但要完全正确,它应该是这样的:
html > body > div#div-id > div.site:nth-child(1) > div.clearfix > ul.choices > li:nth-child(5)
有人想过用 javascript 简单地实现它吗?
原文由 jney 发布,翻译遵循 CC BY-SA 4.0 许可协议
要始终获得正确的元素,您需要使用
:nth-child()
或:nth-of-type()
用于不唯一标识元素的选择器。所以试试这个:您可以添加一个例程来检查其相应上下文中的唯一元素(例如
TITLE
、BASE
、CAPTION
等)。