Лучший способ выборочной загрузки javascript для мобильных веб-страниц?

Я создаю адаптивный веб-сайт, который меняет макет для мобильных сайтов. Это нормально для CSS, но у меня есть несколько тяжелых скриптов (слайдер и т. д.), которые появляются на сайте для настольных компьютеров, и я бы предпочел вообще не предоставлять их мобильным клиентам. Их достаточно просто скрыть в CSS, но тогда javascript все равно будет загружаться и выполняться, а это явно не идеально.

Как лучше всего предотвратить передачу таких ресурсов на мобильные устройства? Я думаю о каком-то обнаружении на основе PHP, которое будет включать соответствующий javascript на страницу, только если будет обнаружен немобильный браузер. Либо так, либо достаточно функции jQuery $.browser?

Я видел различные подходы к этому, но мне было интересно, каков консенсус относительно лучшего метода.

Большое спасибо!


person melat0nin    schedule 11.08.2011    source источник


Ответы (1)


Лучше всего подойдет PHP (или любой другой серверный язык). Возможно, лучше определить, когда показывать его, чем когда не показывать. Существует пугающее количество мобильных телефонов, и было бы гораздо сложнее поддерживать список пользовательских агентов, которые являются «мобильными», чем иметь список пользовательских агентов для настольных компьютеров.

Конечно, у этого подхода есть свои оговорки. Предположим, у кого-то есть измененная строка агента или вы не включили туда относительно непопулярный браузер.

Просто подумайте о том, насколько хорошо вы сможете поддерживать обнаружение, и подумайте о том, как быстро движутся рынки.

PS. Существует достойный помощник для создания базы агентов, но он, похоже, ограничен только смартфонами: http://detectmobilebrowsers.mobi/#generator

person JamesHalsall    schedule 11.08.2011
comment
Спасибо, я подумываю реализовать скрипт php-mobile-detect из Google Code: code.google.com/p/php-mobile-detect. Не заинтересован в том, чтобы платить за detectmobilebrowsers.mobi - похоже, что это можно сделать на разовой основе (принимая во внимание, что некоторые устройства могут быть пропущены в будущем) - person melat0nin; 12.08.2011