Как разобрать таблицы стилей @import с помощью Javascript

Я пытаюсь прочитать селекторы CSS в своих таблицах стилей с массивом document.styleSheets. Он отлично работает с тегами <link> и <style>, но когда я использую @import внутри <style>, он не отображается в массиве - только как cssRule (стиль "Undefined" в Safari 3 и FF 3).

Итак: как я могу разобрать CSS в @импортированном файле?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
10
0
4 155
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Предполагая, что наш документ содержит правило @ import-rule в качестве первого правила в первой таблице стилей, вот код для браузеров, соответствующих стандартам.

document.styleSheets[0].cssRules[0].styleSheet.cssRules;

и особый случай для нашего всеми любимого IE

document.styleSheets[0].imports[0].rules;

Вы могли бы легко понять это сами, если бы вы прочитали страница на quirksmode.org, с которым я уже связался, а затем изучили свойства правила @import с помощью цикла for..in - это то, что я сделал ...

PS: Я пока не могу комментировать другие ответы, но если бы мог, я бы высмеял вас как следует;)

Давай =) (хлопая себя по лбу) Я думал, что проверил свойства, но, должно быть, где-то ошибся. Спасибо друг!

joolss 22.12.2008 18:02

@Christoph: Теперь вы можете комментировать;)

some 22.12.2008 22:43

Check this page - which further links to this one on quirksmode.org.

Спасибо, но я пробовал это ... примеры Quirksmode никогда не анализируют таблицы стилей, встроенные с @import.

Если у меня есть этот HTML / CSS:

<link rel = "stylesheet" type = "text/css" href = "css/test1.css" />

<style type = "text/css">

    @import url('css/test2.css');

    div {
        color: blue;
    }

</style>

... тогда document.styleSheets.length равно 2 (тег ссылки и тег стиля). Файл CSS, связанный через @import, будет доступен как

document.styleSheets[1].cssRules[0]. 

Другими словами, правило CSS. Это также можно увидеть на странице Quirksmode, которую вы упомянули, Кристоф. Я могу получить его cssText ("@import url ('css / test2.css');"), но не могу понять, как разобрать CSS внутри файла (test2.css) ...

Если я совершенно упустил здесь что-то очевидное, смело высмеивайте меня ... :)

Отличная страница с большим количеством информации о парсинге таблиц стилей: http://www.howtocreate.co.uk/tutorials/javascript/domstylesheets

Другие вопросы по теме