Комментарии 12
Аналогом //div[2]
является div:nth-of-type(2)
, а не div:nth-child(2)
. Возможно, поэтому у вас "в хроме тоже может глючить". Да и в Firefox я не припомню проблем с querySelector
для селектора с псевдоклассом (кроме бага с использованием псевдоклассов внутри :has
), может разве что в совсем ранних версиях что-то такое и было.
Еще замечу пропущенные >
при конвертации /
из XPath в CSS.
Плюс, некоторые из "отсутствующих" CSS селекторов на самом деле существуют, например:
a:is([name],[href])
⇐ //a[@name or @href]
body > div:nth-last-of-type(2)
⇐ //body/div[last()-1]
body > div:nth-of-type(-n+2)
⇐ //body/div[position()<3]
*:has(> a)
⇐ //a/parent::*
h1 ~ h2:last-of-type
⇐ //h1/following-sibling::h2[last()]
О, спасибо, исправила. Но в firefox буквально на этой неделе сравнивала разные селекторы и он часть не считывает, которые работают в хроме
Отличная статья, спасибо. нашёл несколько ошибок в таблице "Поиск потомков (обход дерева вниз)":
для xpath "Дети с типом div" написано, "//body/child::*", а должно быть "//body/child::div"
для "Только потомки div" указано "descendant::a"
Хорошая статья в качестве справочного материала с примерами, как всего чудесно. Спасибо, Ольга, за ваш труд.
Ещё полезная функция в XPath - normalize-space(), позволяет убрать пробелы и прочие мусорные знаки из текста элемента
Огромное спасибо за Ваш труд! Видел подобные штуки для регулярок, в виде pdf, очень удобно
Шпаргалка по XPath и CSS-селекторам