Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 01.02.2012, 01:42
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Да, это можно определить и собирать распарсенные простые селекторы в кучки - последовательности, я сейчас шустро пишу примерно то , что раньше оборачивало эту регулярку и сразу ясно станет
__________________
readOnly
Ответить с цитированием
  #52 (permalink)  
Старый 01.02.2012, 01:51
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от poorking
Да, это можно определить и собирать распарсенные простые селекторы в кучки - последовательности
вот именно это и приводит к тому что TYPE проходит в любой части селектора... Увы но регой четко не сделаешь... Моя рега работает так же по правилам стандартов. То-есть все раскладывает по правильному порядку. Но в виду того что нужно выяснять принадлежность дополнительных атрибутов для элементов приводит к тому что вся логика просто рушится. Я не говорю что нельзя все нормально организовать, конечно же можно. Просто это повлияет на скорость, причем значительно. Поэтому порядок не особо страшный казус. Хотя у меня все же он вроде соблюдается... если судить по реге... Что то не припомню что бы такой селектор воспринимался:
a:not([href*=test]).test
Ответить с цитированием
  #53 (permalink)  
Старый 01.02.2012, 01:54
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

я убираю такой
string.replace(/\\([\s\S])/g, "$1");
__________________
readOnly
Ответить с цитированием
  #54 (permalink)  
Старый 01.02.2012, 01:56
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от devote
не понимаю зачем поставлены слеши после prefix это что двоеточие за экранировали чтоль?
Ну да в CSS надо экранировать такие символы
prefix\:tag-name.class\\name {…}

а второй слэш появляется из-за экранирования в JavaScript-строке
Ответить с цитированием
  #55 (permalink)  
Старый 01.02.2012, 01:59
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Octane
Ну да в CSS надо экранировать такие символы
ну в CSS да.. но в селекторах что мы обсуждаем, двоеточие не экранируется... ибо Namespace там нужно указывать так:
prefix|tag-name.class\name
Ответить с цитированием
  #56 (permalink)  
Старый 01.02.2012, 02:00
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Сообщение от devote
вот именно это и приводит к тому что TYPE проходит в любой части селектора
не ) это уже не регексп решает, но проверить просто, вы смотрите, если это начало последовательности, то после сборки распарсенного простого селектора ставите флажок, мол TYPE уже был. А в том ветвлении, где вы проверяете не селектор ли типа заматчен, вы смотрите на этот флажок и кидаете ошибку если он тру. Если вы в итерации видите что это конец последовательности простых селекторов то флажок переключаете на фолс

alert(document.querySelectorAll("a:not([href*=test]).test"));


Нативный qsa ест, значит так можно )
__________________
readOnly
Ответить с цитированием
  #57 (permalink)  
Старый 01.02.2012, 02:14
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от poorking
Нативный qsa ест, значит так можно )
Да и правда, мой тоже ест только что проверил
Ответить с цитированием
  #58 (permalink)  
Старый 02.02.2012, 14:28
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

var hasQSA = (function() {
    var div = document.createElement('div');
    div.innerHTML = "<p class='TEST'></p>";

    if (!div.querySelectorAll || div.querySelectorAll(".TEST")|0)
        return 0;
    
    div = null;
    return 1;
})();

alert(hasQSA);
Ответить с цитированием
  #59 (permalink)  
Старый 02.02.2012, 14:30
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

monolithed, а почему не прокатывает простая проверка наличия этого свойства в документе* ?
var hasQSA = "querySelector" in document;

* при условии, что это свойство не добавили для "заглушки".
Ответить с цитированием
  #60 (permalink)  
Старый 02.02.2012, 14:42
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

melky,
Из Sizzle
// Safari can't handle uppercase or unicode characters when
		// in quirks mode.
		if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
			return;
		}
__________________
readOnly
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск