携帯電話やハンドヘルドデバイスで3Gおよび2G接続を検出する方法はありますか?
たとえば、ユーザーが3Gを使用している場合はハイエンドのウェブサイトを配信し、ユーザーが2Gを使用している場合は高度に最適化されたバージョンを配信します。
携帯電話やハンドヘルドデバイスで3Gおよび2G接続を検出する方法はありますか?
たとえば、ユーザーが3Gを使用している場合はハイエンドのウェブサイトを配信し、ユーザーが2Gを使用している場合は高度に最適化されたバージョンを配信します。
Android 2.2+ には、そのための JS オブジェクトがあります。
接続タイプに基づいて、CSS で使用するクラスを書き出すことができます。しかし、私の知る限り、モバイル Web サイト用の 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/
一部のネットワークは、接続タイプを http ヘッダーとして送信します。
あなたの最善の策は、ユーザーが接続したときに速度テストを行い、クライアントに Cookie として保存しようとすることです