【问题标题】:how to detect the mobile connection is 2G/3G/WIFI using javascript如何使用javascript检测移动连接是2G/3G/WIFI
【发布时间】:2014-09-22 06:42:12
【问题描述】:

我有与以下链接类似的要求,但我必须使用 JavaScript 来处理它。我必须检测移动互联网连接是 2g/3g 还是 WIFI。基于连接我必须执行不同的操作.. 注意:移动设备可以支持任何操作系统,如 andriod/iOS/BB .. 我需要处理任何移动操作系统。

Is there a way to detect what kind of connection I'm using ? WiFi, 3G or Ethernet?

请求大师帮助我输入。谢谢:)

【问题讨论】:

标签: javascript


【解决方案1】:

Network Information API(这是一项实验技术):

网络信息 API 提供有关系统的信息 连接,即一般连接类型(例如,“wifi”, '蜂窝'等)。这可用于选择高清内容 或基于用户连接的低清晰度内容。整个 API 包括添加 domxref("NetworkInformation") 接口和导航器接口的单个​​属性: Navigator.connection。

var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
var type = connection.type;

function updateConnectionStatus() {
  alert("Connection type is change from " + type + " to " + connection.type);
}

connection.addEventListener('typechange', updateConnectionStatus);

【讨论】:

  • 我希望将来会支持它,尽管我怀疑它可能会打开一些安全漏洞。
  • Mac 设备不支持此功能。我不推荐使用 navigator.connection
【解决方案2】:

我为此编写了一个小实用程序。你可以在这里试试 http://ashanbh.github.io/detectClientSpeed/example2.html 并在 github 上 fork:https://github.com/ashanbh/detectClientSpeed

用法:

<script src="scripts/require.js"></script>
<script>
        requirejs(['scripts/detectSpeed'], function (detectSpeed) {

            //Callback to receive timing information
            var callback = function (timings) {
                console.log(timings);
            }
            detectSpeed.startSpeedCheck("https://s3-us-west-1.amazonaws.com/amit.shanbhag/3g/coffee-apple-iphone-laptop.jpg", callback);

        });
</script>

【讨论】:

  • 这是一种检测下载速度而不是连接类型的不准确方法。在检测下载速度时,画像中有几个变量,其中之一是延迟。
  • 是的。它检测速度,而不是连接类型。然而,实际上,当我决定在客户端打开/关闭功能时,我更关心实际感知速度。
  • 我希望您意识到网络中的延迟、抖动和带宽限制可以限制任何形式的网络;使这种检测形式毫无用处。
  • 您最好检测屏幕分辨率和用户代理。因为在大多数情况下,如果用户没有通过 wifi 或以太网连接,他们将使用移动设备。只是我的意见。
  • "最好检测屏幕分辨率和用户代理。"所以当我的手机从 3g 切换到 wifi 时,用户代理和分辨率的变化都会告诉我。
猜你喜欢
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多