Можно ли улучшить мою реализацию адаптивности?

Тема в разделе "JavaScript", создана пользователем pragmatik, 1 апр 2014.

Модераторы: ZiX
  1. pragmatik

    pragmatik Постоялец

    Регистр.:
    12 фев 2013
    Сообщения:
    125
    Симпатии:
    31
    Использую на сайте рабочий скрипт, который определяет размеры экрана и в зависимости от них подключает ту или иную версию ya.share, а попутно и создает критерий m=1, используемый затем для других "адаптивных" условий в шаблоне:

    Вот только кажется мне этот код чересчур громоздким, подскажите, пожалуйста, нет ли более компактного кроссбраузерного способа реализовать адаптивность (без подключения дополнительных библиотек)?
     
  2. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    Для решения, которое уже работает и выполняет свои функции вполне норм, если кроссбраузерно отрабатывает, то экономить байты смысла наверное нет.
    Единственное, что вместо использования document.write лучше вставлять скрипт так:
    Код:
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    script.async = true;
    document.documentElement.appendChild(script);
     
  3. pragmatik

    pragmatik Постоялец

    Регистр.:
    12 фев 2013
    Сообщения:
    125
    Симпатии:
    31
    А не подскажете почему document.write неразумно использовать?
    Кстати, я перерыл массу статеек: в статье на хабре говорится, что скрипты подгружаемые описанным Вами способом всегда асинхронны, т.е. script.async = true; можно не использовать. А в еще одной статье, что document.documentElement.appendChild не во всех браузерах работает, поэтому нужно использовать document.getElementsByTagName('head')[0].appendChild(script);
    Исходя из этих данных пересочинял скрипт и выкинул объявление переменных width, height и mob
    вот что получилось:
     
  4. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    Так как document.write блокирует отрисовку всей страницы, пока не будет выполнен.
     
    pragmatik нравится это.