Retrieving CSS Path from DOM Element with Enhanced Precision
The provided function attempts to generate a CSS path for a given DOM element. However, its output lacks specificity, failing to capture the position of the element within its siblings. To address this, we require a more sophisticated approach.
Improved CSS Path Function
The enhanced function presented below addresses the original limitations:
var cssPath = function(el) { if (!(el instanceof Element)) return; var path = []; while (el.nodeType === Node.ELEMENT_NODE) { var selector = el.nodeName.toLowerCase(); if (el.id) { selector = '#' el.id; path.unshift(selector); break; } else { var 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(" > "); }
Enhancements and Benefits:
Example Usage:
Utilizing this improved function, one can now obtain a more precise CSS path for a given element:
console.log(cssPath(document.getElementsByTagName('a')[123])); // Output: "html > body > div#div-id > div.site:nth-child(1) > div.clearfix > ul.choices > li:nth-child(5)"
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3