Использование двоеточий в querySelectorAll () - PullRequest
4 голосов
/ 19 марта 2012

Я пытаюсь использовать метод querySelectorAll() для получения ссылок на веб-страницах, но я хочу игнорировать ссылки, начинающиеся с "javascript:", или использовать другой протокол, например "itpc: //"

Есть ли способ включить их в псевдоселектор "not ()"?

document.querySelectorAll("a:not([href^=javascript]):not([href^=itpc])"); //works
document.querySelectorAll("a:not([href^=javascript:]):not([href^=itpc://])"); //doesn't work

Даже если первый метод отлично работает на текущей странице, нет гарантии, что он будет работать на каждой странице.Я буду использовать его, поэтому я действительно хотел бы иметь возможность обнаружить это двоеточие.

1 Ответ

11 голосов
/ 19 марта 2012

На основании спецификации , преобразование значений, на которые вы хотите нацелить, в строки будет работать:

document.querySelectorAll("a:not([href^='javascript:']):not([href^='itpc://'])");

Проблема с вашей текущей версией заключается в том, что, если вы не используете кавычки, значения должны соответствовать ограничениям, установленным для идентификаторов , которых они не делают.

...