document.styleSheets [i] .disabled не работает в Chrome - PullRequest
1 голос
/ 04 января 2012

Мне нужно решить довольно странную проблему; решение должно быть чистым JavaScript (не допускается никаких фреймворков). Вот оно: «Показать все таблицы стилей, которые включены на странице».

Я использую Chrome из-за нескольких проблем innerHtml в IE, хотя он имеет свойство cssText таблицы стилей, которое идеально подходит для моих целей.

Во всяком случае, вот мой пример

<html>
    <head>
        <style MEDIA="screen">
            h1 {color:blue; font-size:10pt; background-color:cyan}
        </style>
        <style MEDIA="screen" DISABLED="true">
            h4 {color:blue; font-size:10pt; background-color:cyan}
        </style>
        <style MEDIA="print">
            h1 {color:gray; font-size:12pt; font-weight: bold}
            h2 {font-style:italic}
        </style>
        <style DISABLED="true">
            h2 {color:green; font-size:12pt}
        </style>
        <style>
            h3 {font-style:italic}
        </style>

        <script language="Javascript">
            function displayActiveStyles() {
                var container = document.getElementById('activeStyles');                                
                var i;
                for (i=0; i<document.styleSheets.length; i++) {
                    alert(document.styleSheets[i].disabled);
                }   
            }                  
        </script>
    </head>
    <body>
        <h1>one</h1>
        <h2>two</h2>
        <h3>three</h3>
        <input type="button" value="show" onclick="displayActiveStyles()" >
        <hr />
        <div id="activeStyles"></div>
    </body>
</html>

Проблема в том, что для всех 5 таблиц стилей это предупреждает false, что не правильно. Если у кого-то есть идеи о том, где я совершаю ошибку, или если это вообще возможно в chrome, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 04 января 2012

Я понимаю, что вы хотите перечислить ссылки на каждую таблицу стилей, верно?В своем коде вы просматриваете каждую таблицу стилей и предупреждаете ее отключенное свойство.Так как они включены, они предупреждают «ложь», что правильно.Если вы хотите получить href только из включенных, вы можете сделать что-то вроде:

var i;
for (i = 0; i < document.styleSheets.length; i++) {
    if (!document.styleSheets[i].disabled) {
        alert(document.styleSheets[i].href);
    }
}

Попробуйте здесь, есть одна таблица стилей, для которой href равен null.Не совсем уверен, почему это так, я быстро что-то гуглил, и, возможно, потому, что это тег <style>.Вы можете добавить чек на document.styleSheets[i].href along with the check for disabled`.

...