精度を高めた 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)"
以上がDOM 要素の正確な CSS パスを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。