如何捕捉不稳定的互联网连接
How to catch flaky Internet connections
我遇到一种情况,用户有Wi-Fi连接,但Wi-Fi没有连接到互联网。
所以navigator.onLine生成了一个true,但实际上用户并不在线。除了进行实际的ajax调用之外,还有其他指标可以判断我们是否在线吗?
我似乎记得PhoneGap有一个额外的指示器。
这样的东西应该能在中工作
var req = new XMLHttpRequest();
req.open('GET', 'http://www.google.com', false);
req.send(null);
if(req.status == 200)
alert(req.responseText);
真正可靠的方法是尝试去做一些事情。它可以通过点击你自己网站的一些文件来完成。
i_am_online = true;
function connectivity_test()
{
if (navigator.onLine) // have network, test if can actually reach the server
{
$.ajax('/some_static_file.html', { type: 'HEAD', cache: false })
.done(function() { setTimeout(connectivity_test, 2000); i_am_online = true; })
.fail(function() { setTimeout(connectivity_test, 2000); i_am_online = false; });
}
else // without network I'm offline, no need to ping
{
setTimeout(connectivity_test, 2000);
i_am_online = false;
}
}
connectivity_test();
这应该每2秒测试一次对等连接,并相应地用true
或false
更新变量i_am_online
。
对一些静态文件进行测试,以确保不会触发服务器端脚本。方法HEAD
将只发送标头,因此无论文件大小如何,此"ping"都将生成最小的网络流量。
window.addEventListener("online", NowOnline, false);
window.addEventListener("offline", NowOffline, false);
相关文章:
- 当没有互联网连接时,谷歌地图Java脚本API处理
- 如果没有互联网连接,Android WebView离线消息
- 捕获”;没有互联网连接”;AngularJS中
- 我如何通过从服务器调用gif来检查是否有互联网连接
- 如果没有互联网连接,请隐藏iframe
- 如何捕捉不稳定的互联网连接
- 使用jquery检查互联网连接
- 使用 html5 的互联网连接代码
- 如果没有互联网连接,我想显示吐司,不知道该怎么做
- Jquery 移动错误消息,当没有互联网连接加载谷歌地图
- Jquery移动检查时没有互联网连接显示错误消息,而不是加载谷歌地图
- 当互联网连接丢失时,如何从 Ajax 调用中获取信息
- Angular js,如何在调用url之前检查用户是否有互联网连接
- 互联网连接检查不起作用
- 基于英特尔 xdk html5 的应用程序只能在启用互联网连接时工作
- 在javascript中检查互联网连接的最佳实践
- 如何检查移动互联网连接
- 使用 JavaScript 检测互联网连接
- 在JS中检查互联网连接的最快方法
- 在PhoneGap应用程序中检测缓慢的互联网连接