Detecting Internet Connection with JavaScript
目前,我正在制作一款具有某些需要互联网连接的功能的缓存iPhone应用程序,而其他功能则不需要。我想知道如何使用JavaScript检测互联网连接,如何使某些页面显示"无互联网连接"文本,以及使其他页面正常工作。
- 我不确定这是否对iPhone有用,但是网站上有类似的帖子:stackoverflow.com/questions/2384167/…
在HTML5中,您可以使用:
检测互联网连接。
实时演示:http://jsfiddle.net/DerekL/fHQK4/
- 最干净的解决方案,对。可惜,那是行不通的!据此,navigator.onLine和此navigator.onLine虽然是HTML5的一部分,但仅在基于Chrome和基于WebKit的浏览器中正确支持!其他浏览器始终返回true或-禁用Work Offline模式时返回true,而启用false时返回false,而不考虑实际的连接性。
-
我使用一个发现的简单jsFiddle示例对此进行了验证(不是我的)。它在Chrome中工作正常,在Firefox中完全失败(由于未启用Work Offline,所以总是返回true)。我不知道这是否可以在IE中使用,因为...它像可怜的乞g一样挂在任何jsFiddle页面上(lam脚,la脚的浏览器)! :]如果要进行可靠的连接检查,则必须执行XHR请求并检查它是否失败。您将在我的第一个评论中提供的链接中找到许多示例。
-
@trejder-本地HTML5方法可能尚未得到广泛支持,但是它确实减少了发送到服务器的请求。我建议仅当客户端的浏览器不支持该方法时,才应使用旧的XHR方法。
-
@Derek朕会功夫太好了!那么,如果"客户端的浏览器"不支持,您将如何测试呢?您如何区分,如果未设置Work Offline(当实际连接可能断开时),Firefox将返回true。 Chrome,仅当与Internet的真实连接时才报告true;您将检查浏览器的名称吗?您将如何知道,哪个浏览器与Firefox相同,以及哪个浏览器类似于Chrome?加上:开发人员无法彼此同意,"在线"意味着什么,HTML5规范的这一部分被许多人视为错误且不清楚。
-
@Derek朕会功夫Plus:我不知道,这种HTML5方法是否会得到广泛支持?我发现2到3年的帖子说,这的实现是错误的。如果多年来没有发生任何变化(因为浏览器的开发人员不同意"在线"是什么意思,尽管这对我来说很清楚),那么我也不知道,是否可以指望这将被清除?并得到广泛的支持。我仅将此技术用于本地调试(因为我一直使用Chrome),而从未在生产应用程序中使用。
-
@trejder-哇冷静。我的想法是,目前它尚未得到广泛支持。但关键是他正在缓存的iPhone应用程序中使用它。
-
@Derek朕会功夫好,抱歉! :]
-
navigator.onLine在Chrome和Safari中不可靠。在mozdev上阅读。如果您连接到LAN或路由器,它将返回true。但这并不总是意味着您在线。
-
@ Poppe76如果您通过LAN连接到路由器,则意味着您已连接到网络,这意味着您在线。如果这是您的意思,它并不会表明您的网络是否可以访问特定的地址。
您可以制作一个iframe并将src设置为google。如果几秒钟之内没有触发加载,则说明他们可能没有互联网。
-
如果用户的互联网速度较慢并且加载需要一分钟怎么办?
-
@Derek,是的,但是对于从世界上最快的服务器加载大约600字节的互联网连接来说,花费多于几秒钟的希望并不多。可能还没有互联网。