Не изменяется DOM после назначения класса css в Chrome
Если изменить класс элемента и в новом классе допустим высота элемента отличается от текущией высоты, то новая высота будет лишь по завершении js-скрипта.
В результате, все вычисления, которые должны учитывать новую высоту элемента, конечно же завершаются с ошибкой. Это происходит только в хроме. Причем ошибка в том, что хром не успев загрузить CSS-файл уже запускает скрипт. И естественно нужный класс просто еще не доступен. Как быть??? Остальные броузеры сначала загружают CSS, а потом запускают скрипт. |
Цитата:
Цитата:
|
хе, тут же сам нашел как это исправить)))
Оказывается в гугл хроме нужно CSS загрузку <link... ставить ВПЕРЕДИ загрузки скрипта, в котором классы из этого CSS используются. У всех прочих броузеров без разницы в какой последовательности, а в хроме вот как. И даже не придерешься, логично же! |
khusamov,
я Вам больше скажу, даже если Вы укажете подключение css раньше скрипта, если он загрузится раньше замера ширины, Вам повезло. Простой тест: index.htm … <link rel="stylesheet" type="text/css" href="sleeper.php" /> <script type="text/javascript">alert(document.body.clientWidth)</script> … sleeper.php <?php header("Content-Type: text/css"); sleep(5); ?> body { width: 200px; } IE8: 200px (ждет окончания загрузки) Fx3.6: 200px (ждет окончания загрузки) Op10.50: 1264px (ждет загрузки 3 секунды, потом в любом случае запускает скрипт) Cr4: 1264px (не ждет вообще) |
Но в таком случае возникает вопрос, как быть, если один файл от другого зависит?
|
khusamov,
а никак. Или ждать onload, или не полагаться на разметку. |
Часовой пояс GMT +3, время: 13:06. |