精度を高めた DOM 要素からの CSS パスの取得
提供された関数は、指定された DOM 要素の CSS パスの生成を試みます。ただし、その出力には具体性が欠けており、兄弟内の要素の位置を捕捉できません。これに対処するには、より洗練されたアプローチが必要です。
改良された CSS パス関数
以下に示す拡張機能は、元の制限に対処します:
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(" > "); }
拡張機能と利点:
使用例:
この改良された機能を利用すると、特定の要素のより正確な CSS パスを取得できるようになりました:
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)"
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3