На странице html установлены плагины, можно взять для примера tiny carousel.
При изменении url на #newUrl требуется изменить стили в head. То есть полностью все таблицу стилей. А не отдельные два — три — десять свойств.
Насколько это реально. Без костылей сделать?
Есть такой нюанс, что при изменении таким способом:

if(window.location.toString().indexOf('newUrl') > 0){ 
			$('link').attr('href','newStyles.css');
		}		

Получается не то, что хотелось бы.
Скрипты успевают загрузиться неправильно.
Итого, буду благодарен за решение вопросов:
1. Кроссбраузерная подгрузка стилей.
2. Без ajax контроль порядка загрузки скриптов.
Еще такой вопрос каким образом разные браузеры загружают объекты?
В какую очередь загружаются стили, скрипты, теги в body.

Оценить:|
  
Комментировать
Раздел: JavaScript    
Просмотров: 2452
Комментариев (13)
  1. DEZZZZZ
    Батусов Андрей [DEZZZZZ]
    24.09.2012 в 15:57

    Чтобы заменить css нужно не href менять. А удалить link с ненужной css и создать новый link с новой css.

    Что-то вроде того:

    $(function(){
    	$('body').bind('load', loadcss('newStyle.css', 1));
    });
    
    
    function loadcss(filename, fbool) {
    	if (fbool==1){
    		$('link[rel^=stylesheet]').remove();
    	}
    	$('head').append("<link rel='stylesheet' href=" + filename + "  type='text/css'>");
    }
    • Lemaro
      Ромка [Lemaro]
      24.09.2012 в 16:09

      Случай такой что передается параметр из другого проекта, генерит ссылку, проходишь по ссылке один получаешь такой дизайн, по ссылке два другой дизайн.
      Вариант

      $('head').append('...')

      не подходит.
      Т.к. это происходит после загрузки DOM, а возможно ли загрузить до загрузки скриптов? Иначе скрипт считает не те значения из таблицы стилей.

      • kukushka
        24.09.2012 в 19:20

        Может быть стоит передавать GET-параметр в той ссылке? И на сервере разруливать. Зачем такие извращения, непонятно.

  2. slaffko
    24.09.2012 в 15:57

    А если так:

    if(window.location.toString().indexOf('newUrl') > 0){
       $('body').addClass('newStyles');
    }

    И для класса newStyles прописать стили. Никакой подгрузки не требуется

  3. Lemaro
    Ромка [Lemaro]
    24.09.2012 в 16:50
  4. kukushka
    24.09.2012 в 19:18

    Чувак, может быть стоит менять что-то не по изменению ссылки, так как это следствие, а при нажатии на ссылку, не?

  5. kukushka
    24.09.2012 в 19:21

    Еще можно подгружать вообще все стили уже после прогрузки DOM. Насчет корректности работы скриптов, если я не ошибаюсь можно управлять их моментом загрузки в зависимости от прогруженности DOM’a.

  6. Lemaro
    Ромка [Lemaro]
    25.09.2012 в 08:22

    Спасибо за помощь, просмотрел и продумал как лучше поступить, в итоге лучший вариант это добавление класса к body,
    и добавление этого класса в стилях в копии ко всем элементам с другим отображением.

  7. Lemaro
    Ромка [Lemaro]
    26.09.2012 в 09:51

    Зачем тебе эта грязь? На них же у нас ничего не продается -> ничего не купишь? Тяжесть в кошелке таскать охота?)))))

Оставить комментарий