Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   cssRules.length не работает в Хроме (https://javascript.ru/forum/events/51988-cssrules-length-ne-rabotaet-v-khrome.html)

horan 28.11.2014 19:35

cssRules.length не работает в Хроме
 
Здравствуйте, форумчане! Вопрос такой, подключаю в <head> два файла со стилями:

<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/themes.css">

потом с помощью JS пытаюсь alert'oм вывести количество свойств у первого стиля:

alert(document.styleSheets[0].cssRules.length)

Проблема вот в чем: в Хроме и Опере alert не выводит, а в Лисе и даже в IE выводит!!!.

PS. Если вставить содержимое первого стиля в сам документ, то во всех браузерах alert выводит. Но мне нужно только чтоб подключались внешние файлы с таблицами стилей.

Octane 28.11.2014 19:53

Загружай по HTTP и все будет работать. С file:/// всегда проблемы.

horan 28.11.2014 20:06

Действительно!Выложил на свой сайт!Заработало!)))Почему интересно локально не работает(((

bes 28.11.2014 20:34

Цитата:

Сообщение от horan
Действительно!Выложил на свой сайт!Заработало!)))Почему интересно локально не работает(((

потому что браузеры предполагают работу в сети, поставь локальный сервер и не придётся выкладывать на сервер хостера

horan 29.11.2014 10:06

Спасибо!

kostyanet 29.11.2014 13:44

html с сетью никак не связан, браузеру пофигу откуда этот текст получать.

kostyanet 29.11.2014 13:50

bug https://code.google.com/p/chromium/i...etail?id=49001

bes 29.11.2014 13:56

Цитата:

Сообщение от kostyanet
html с сетью никак не связан, браузеру пофигу откуда этот текст получать.

Цитата:

Сообщение от kostyanet

это не так, есть протокол передачи данных - есть реакция браузера, делать что-то для протокола file вообще смысла нет, поэтому к багам в этом отношении, предполагаю, отношение скептическое, но есть смысл реализовать собственный локальный сервер (устанавливаемый при установке браузера) с поддержкой используемых на боевом фронте протоколов

kostyanet 29.11.2014 14:13

Не слушайте дятла, file не протокол, а схема, то есть по-нашему (схема в терминах http) - функция. Разница в том что по схеме http браузер получает сведения о приходящих данных в заголовках, а по схеме file - по метатегам в файле. То есть когда поток - заголовки, а когда файл - теги. Причем браузер может сам запихать туда какие надо меты, чтобы потом нормально открыть.

Проблема тут такая же, как с канвасом, в который локально ничего не запихаешь. Браузер не знает о домене, поэтому теряется в догадках и исходя из принципа лучше перебздеть - отключает некоторые фичи связанные с этой кроссдоменностью. Грамотный браузер должен понимать функцию file://, а неграмотный - тупит. Вот и все.

kostyanet 29.11.2014 14:17

Короче говоря браузер "думает" что вы открыли файл стилей с чужого сайта и хотите там что-то поменять, типа написать в ::after content:"bes - дятел", чтоб оно на том самом сайте и отобразилось.


Часовой пояс GMT +3, время: 03:16.