29

如果客户端通过 WWAN(计量)连接或其他方式连接,我希望将特定网站定制为低带宽版本。

连接类型对于站点了解它是否应该提供丰富的体验或带宽有效的体验很重要。我的桌面在计量连接上运行,并且在未来,更多的桌面将通过计量蜂窝网络(包括 Windows 8 平板电脑)连接,高效的网络应用程序应该尊重用户可能不需要在按次付费的高细节资产字节连接。

如何使用 HTML5/JavaScript 检查客户端是否通过 WiFi/LAN/WWAN 连接?

注意:我不希望明确检查浏览器标头(对于可以通过多种方法连接到 Internet 的桌面浏览器来说,这并不是真正的解决方案)。

4

4 回答 4

24

navigator.connection(前缀)。此 API 公开有关客户端带宽的信息。

于 2012-07-28T13:43:59.363 回答
7

你不能。关于客户端如何连接到服务器的信息(即,它使用哪些技术,是按字节付费还是按固定费率)是不公开的。如果这对您有帮助,您可能能够获得跟踪路线(与跟踪有关的所有问题),但该信息将无法通过 JavaScript 访问。

用 JS 可以做的就是简单的带宽测试。通过 XHR 下载一个已知大小的文件,并测量所需的时间。

连接的付费模式是绝对私人数据。它既不会被发送到互联网上的服务器,也不会被加载的网站使用。如果您需要此信息来为客户提供定制应用程序,请直接询问用户。如果他愿意,他会告诉你的。


然而,等等。可以设置最新的 Chrome 和 Firefox(用户偏好)以提供有关实验navigator.connection对象的数据。

Windows.Networking.Connectivity此外,对于开发 Metro 应用程序,Windows 提供了有关API的此类信息,请参阅本教程

于 2012-07-28T13:20:37.570 回答
4

也许你以错误的方式接近它。看看 Gmail 模型。他们有一个富客户端,如果页面需要很长时间加载,用户可以选择退出。标准客户端更轻巧,并使用更“传统”的网页设计。
试图自动检测不应该存在的东西可能会让你陷入一个非常深的兔子洞。

于 2012-07-28T13:30:50.733 回答
1

老问题,但在寻找自己的目的时,我发现了这个——我还没有尝试过,因此 YMMV:https ://github.com/ashanbh/detectClientSpeed 。

测量下载资产的时间以获取带宽信息的基本概念是主观的,不一定一致,但缺少 iOS/Android 的原生平台 API,这不是一个坏选择。更轻松的替代方法可能是测量 google.com 之类的 ping 时间。

于 2015-07-09T19:57:21.453 回答