2012-06-06 2 views
1

Я знаю, что кто-то будет критиковать то, что я хочу, но я задам свой вопрос.Получить не встроенный css из javascript


Я знаю, что мы не можем получить стиль элемента, если их css не были сформированы inline. Поэтому я хочу, регулярное выражение (потому что я не очень хорошо, чтобы сделать один), который будет получать все style тегов и будет применять регулярное выражение для их innerHTML сделать массив как этот:

CSS [ «myDiv»] [ «цвет»] -> «красный»

Без использования getComputedStyle из-за несовместимости браузера.

+0

См. Http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – woz

+1

Вы в 30 раз лучше использовать комбинацию 'getComputedStyle' и pre IE9's 'currentStyle'. – Snuffleupagus

ответ

3

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

Вы должны выполнить именно эту реализацию вместо этого. Инструмент, в котором вы нуждаетесь, - это JavaScript и требуемый API - это DOM. Для каждого узла в DOM существует объект стиля, который содержит все прикладные стили и который имеет формат, очень близкий к тому, что вы пытаетесь создать. Вы можете получить доступ к этому через getComputedStyle и currentStyle.

+0

вы можете добавить кросс-браузерную комбинацию getComputedStyle и currentStyle, как сказал snuffleupagus, и я проверю ваш ответ как принятый! – user1365010

+0

Я дам вам ссылку на полезную страницу с информацией и кодом, который вам нужен: http://www.quirksmode.org/dom/getstyles.html –

Смежные вопросы