Как читать неподдерживаемые свойства CSS браузера?
Сегодня я обнаружил, что в IE6, IE7 и IE8 можно читать неподдерживаемые свойства CSS с использованием метода .css() jQuery:
jQuery(node).css('transition'); // Returns the transition value
Это позволило мне добавить резерв анимации для переходов CSS3 в эти браузеры в моем jQuery-плагине jquery.transitions(github.com/stephband/jquery.transitions). Джой.
Вопрос: возможно ли читать неподдерживаемые свойства CSS в других браузерах? Мои начальные тесты с использованием вышеуказанного метода в FF3.6 и IE9 оказались бесплодными. Есть ли другой способ, не разбирающий таблицы стилей?
Ответы
Ответ 1
Для IE9:
После некоторого тестирования я сделал еще одно открытие.
Хотя "переход" не поддерживается в IE9, он появляется в файле document.stylesheets [n].cssRules [n].cssText, в отличие от других браузеров, и в конечном итоге отображается как getComputedStyle (node).transition. Это означает, что чтение легко. Двойная радость!
Интересно, и, вероятно, бесполезно, все правила с префиксом появляются, так что вы можете читать -moz- и -webkit- префиксные правила в вашем JavaScript.
Для FF3.6/WebKit
Нет таких трюков для FF3.6 или ниже, или WebKit, хотя я не слишком волнуюсь. Я считаю, что прием FF4 будет довольно быстрым.
Ответ 2
Я не уверен, что этот метод будет работать слишком хорошо в большинстве браузеров, поскольку @BoltClock говорит, что это не то, что браузер должен делать, поэтому похоже, что вам просто повезло с IE.
Если бы я хотел предоставить такие функции, как это, я бы использовал Modernizr, чтобы обнаружить, какие функции отсутствуют.
Ответ 3
DOM Level 2 Style из 2000 что-то предусмотрело программный доступ к правилам, которые пользовательский агент не понял. Я написал ответ по старой спецификации и один из комментариев ссылается на bug, загруженный с Mozilla для его реализации.
Однако ни одна из поставщиков браузеров не реализовала эту функцию. Итак, в последней спецификации w3 полностью удалила эту функцию. Вы можете найти дискуссионный поток, требующий повторной реализации этой функции в спецификации, но это было в 2009 году, а сейчас 2011 и w3 не похоже на его добавление.
Итак, технически IE соответствовал спецификации, пока не появился новый:)
Ответ 4
В IE9 я обнаружил, что getComputedStyle
не работает надежно для всех неподдерживаемых свойств, а это делает:
element.currentStyle.getAttribute('-some-test')