Есть ли способ определения скорости соединений 3G и 2G на мобильных телефонах и портативных устройствах? - PullRequest
3 голосов
/ 30 июля 2011

Есть ли способ обнаружить соединения 3G и 2G на мобильных телефонах и портативных устройствах?

Как, если я хочу доставить сайт высокого класса, когда пользователь работает в сети 3G, и версию с высокой степенью оптимизации, если пользователь работает в сети 2G.

Ответы [ 2 ]

3 голосов
/ 02 ноября 2011

В Android 2.2+ для этого есть объект JS.

Вы можете написать класс для использования CSS в зависимости от типа подключения. Но, насколько я знаю, он не доступен на iOS для мобильных веб-сайтов.

var connection, connectionSpeed, htmlNode, htmlClass;
connection = navigator.connection || {"type":"0"}; // fallback

switch(connection.type) {
  case connection.CELL_3G: connectionSpeed = "mediumbandwidth"; break;
  case connection.CELL_2G: connectionSpeed = "lowbandwidth"; break;
  default: connectionSpeed = 'highbandwidth';
}

/* set the connection speed on the html element
   i.e. <html class="lowbandwidth">
*/
htmlNode = document.body.parentNode;
htmlClass = htmlNode.getAttribute("class") || "";
htmlNode.setAttribute("class", htmlClass + " " + connectionSpeed);

Код из слайда 24 в этой презентации:
http://davidbcalhoun.com/present/mobile-performance/

0 голосов
/ 03 августа 2011

Некоторые сети отправляют тип соединения в виде заголовка http.

Лучше всего сделать тест скорости при подключении пользователя и попытаться сохранить его на клиенте в виде файла cookie

...