Я работаю над небольшим модулем запросов (в js) для html, и я хочу предоставить общую функцию query(selector)
, поддерживающую в качестве строкового аргумента как селекторы css, так и селекторы XPath.
Независимо от того, каккаждый выбор сделан, моя проблема здесь в том, как определить, является ли данная строка селектором xpath или css.Мы можем предположить, что функция будет выглядеть примерно так:
function query(selector){
selectorKind = identifySelectorKind(selector); // I want to know how to code this particular function
if(selectorKind==="css") return queryCss(selector);
if(selectorKind==="xPath") return queryXPath(selector); //Assume both functions exists and work
}
Мой первый подход (учитывая мое ограниченное знание запросов xPath) состоял в том, чтобы определить тип запроса, проверив, является ли первый символ /
(здесь я предполагаю, что все соответствующие запросы xPath начинаются с /
)
Итак, identifySelectorKind
будет выглядеть примерно так:
function identifySelectorKind(selector){
if (selector[0] === "/") return "xPath";
else return "css";
}
Обратите внимание, что мне не нужно проверятьни селекторы css, ни xpath, мне нужен только однозначный способ их различения.Этой логики будет достаточно?(другими словами, все селекторы xPath начинаются с /
, и ни один селектор css не начинается одинаково?), если нет, есть ли лучший способ или некоторые соображения, которые я, возможно, захочу узнать?