Вход

Просмотр полной версии : Определить, задано ли свойство в CSS


gmihalkov
17.04.2013, 23:23
Требуется определить, ЗАДАНО ЛИ свойство где-нибудь в CSS.
Встроенные функции .getComputedStyle и .currentStyle возвращают значение даже если CSS свойство для элемента не прописано (значение по умолчанию для браузера). Нужна функция вида
function cssExists(element, styleName) { [code] }, которая возвращала бы true или false в том случае, если где-то в стилях указанное свойство прописано.

skrudjmakdak
18.04.2013, 09:01
console.log(object.style.color);
вот если стиль в классе прописан, то копаться надо.. имхо вернет не то что надо (не помню)..

danik.js
18.04.2013, 10:09
Проходим по всем стилям документа, проверяем каждый селектор через element.matchesSelector(selector) (с браузерными префиксами и костылем для старых браузеров). Подругому наверное никак.

Aetae
18.04.2013, 13:10
danik.js, и так тоже может не сработать - если css-ка, например, с другого домена грузится.=)

Вариант - сравнить getComputedStyle чистого элемента из ифрейма и текущего. Но если в css указано точно такое-же значение как и дефалтное - не прокатит.(Честно говоря не догадываюсь зачем оно вообще надо)

danik.js
18.04.2013, 17:11
Но если в css указано точно такое-же значение как и дефалтное - не прокатит.(Честно говоря не догадываюсь зачем оно вообще надо)
Да да. Склонировать документ во фрейм, но без стилей. И сравнивать. Хотя при клонировании может что-то полететь...

Aetae
18.04.2013, 20:40
Да да. Склонировать документ во фрейм, но без стилей. И сравнивать. Хотя при клонировании может что-то полететь...
Зачем весь документ, просто элемент. На вскидку вроде никакие дефалтные стили не зависят от вложенности.