有没有办法确定Javascript客户端是否在移动网络上使用手机而不是wifi?

时间:2012-07-25 20:10:13

标签: javascript mobile

我正在尝试为手机用户提供尽可能响应的网站,这意味着要删除多个带宽需求的功能。特别是,如果用户使用wifi而不是3g / 4g,我想加载外部字体。

一个非常好的代理是“手机或平板电脑”,平板电脑通常是“良好连接”的截止点。这种方式有用,但有3g / 4g平板电脑,wifi上有手机,所以它并不完美。

我认为没有比这更好的了,但也许stackoverflow的集体智慧已经找到了一种方法。这可以检测到吗?

5 个答案:

答案 0 :(得分:3)

不是专注于移动设备,而是进行带宽测试。唯一可以确定的方法是测量将文件下载到设备的时间。

在此处尝试接受的答案:How to detect internet speed in Javascript?

答案 1 :(得分:2)

您可以尝试this answer中建议的解决方案,即使用navigator.connection.type。但是,这绝对是非标准的,它似乎仅限于Android设备。另请参阅MDN entry,它在同一个metered对象上提及navigator.connection属性 - 这也可能有用。

获得最佳报道:var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;

答案 2 :(得分:1)

执行此操作的唯一方法我知道,这有其自身的问题,是在请求时(在Web服务器上)对请求的IP地址进行反向查找,并查看它是否来自无线运营商。这有两个问题:我不知道移动设备是否使用与有线网络(版本无线版本与版本Fios)不同的网络,而另一个问题是那些可能实际有线的公司的员工将显示为无线网络。

答案 3 :(得分:0)

JavaScript不提供任何网络级连接类型的挂钩。您可以做的最好的事情是下载已知的测试文件并根据该文件做出决定。

如果失败,只需询问用户是否更喜欢高/低带宽设置。

答案 4 :(得分:0)

您可以尝试对非常常见的本地地址(只能通过Wifi访问)进行网络探测,例如192.168.1.100和朋友。方法如下:

  • 使用img处理程序创建onError元素。
  • src属性设置为您要“ping”的地址
  • 如果您收到错误,则表示该地址不存在
  • 没有错误表示地址存在

我最初在Ajax Security(好书)中读过这项技巧。