Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подгрузка стилей с использованием iframe (https://javascript.ru/forum/misc/53917-podgruzka-stilejj-s-ispolzovaniem-iframe.html)

FanAizu 24.02.2015 02:04

Подгрузка стилей с использованием iframe
 
Стоит следующая задача: при выборе темы оформления сайта в селекте, нужно менять значение href у тега link с используемой таблицей стилей на сайте. Проблема в том, что меняя значение href у link, сайт отображается без стилей, пока не загрузятся новые. Поэтому нужно каким-то образом отслеживать загрузку стилей нововыбранной темы и только после этого менять значение href у линк, тогда, теоретически, смена оформления сайта произойдет без мерцания, то есть мгновенно. Но нету возможности отследить, когда загрузятся стили в теге link. Поэтому нашел выход - грузить стили новой темы в iframe-е т.к. у window внутри iframe-а есть событие load, которое дожидается загрузки всех ресурсов, в том числе и таблиц стилей. Но хотелось бы уточнить у знающих людей пару моментов:
1) будут ли стили, подгруженные в iframe-е, кэшироваться браузером?
2) с событием onload у window в iframe нету никаких проблем? Просто гуглил про iframe и у людей постоянно с этим вопросы на stackoverflow.
3) при условии, что стили в iframe-е кэшируются браузером, предположим, что на сайте сейчас стоит тема theme1.css, а в iframe-е я подгрузил нововыбранную тему пользователем theme2.css, не будет ли все равно на мгновение сайт отображаться без стилей вообще, в момент, когда я после срабатывания в iframe-е у window события onload, изменю значение href у тега link на theme2.css и до тех пор, пока браузер не возьмет стили theme2.css из кэша? Естественно я это протестирую, но во всех браузерах не протестишь, поэтому хотелось бы получить экспертное мнение. Спасибо большое.

danik.js 24.02.2015 04:58

Тут обсуждалось. Предлагался крутой вариант с "альтернативными" стилями. Причем во всех браузерах кроме хрома тему можно выбрать прямо из меню браузера. Правда есть минус - браузер грузит все css-файлы сразу же. Зато переключение моментальное :)

danik.js 24.02.2015 04:59

Цитата:

Сообщение от FanAizu
нету возможности отследить

Разве? А в каком браузере не работает onload на link'е?

danik.js 24.02.2015 05:08

Цитата:

Сообщение от danik.js
А в каком браузере не работает

Походу в хроме, и в некоторых старых версиях файрфокса. Тут обсуждается проблема с onload:
http://stackoverflow.com/questions/3...element-onload


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