4

我正在尝试使网站尽可能地响应电话用户,这意味着要删除一些需要带宽的功能。特别是,如果用户在 wifi 上但不在 3g/4g 上,我想加载外部字体。

一个很好的代表是“手机或平板电脑”,平板电脑通常是“良好连接”的分界线。这个有点用,但是有3g/4g的平板,还有wifi上的手机,所以不完美。

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

4

5 回答 5

3

不要专注于移动设备,只需进行带宽测试即可。真正确定的唯一方法是测量将文件下载到他们的设备的时间。

在此处尝试接受的答案:如何在 Javascript 中检测互联网速度?

于 2012-07-25T20:16:57.973 回答
2

您可以尝试此答案中建议的解决方案,即使用navigator.connection.type. 但是,这绝对是非标准的,并且似乎仅限于 Android 设备。此外,请参阅MDN 条目,其中提到了metered同一navigator.connection对象上的属性 - 这也可能很有用。

为了获得最佳覆盖:var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;

于 2012-07-25T20:16:33.097 回答
1

我知道的唯一方法是在请求时(在 Web 服务器上)对请求的 IP 地址进行反向查找,看看它是否来自无线运营商。这样做的两个问题是;我不知道移动设备是否使用与有线网络不同的网络(无线版本与 Fios 版本),另一个问题是那些可能实际使用有线网络的公司的员工会出现无线网络。

于 2012-07-25T20:16:24.483 回答
0

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

  • 使用处理程序创建一个img元素onError
  • src属性设置为您要“ping”的地址
  • 如果你得到一个错误,那么你知道地址不存在
  • 没有错误意味着地址存在

我最初在Ajax Security(好书)中读到了这项技术。

于 2012-07-25T20:18:39.450 回答
0

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

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

于 2012-07-25T20:14:50.023 回答