在我的Ionic应用程序中,我需要根据用户是离线还是在线执行某些操作。
我会在应用程序中使用$ cordovaNetwork插件来查找连接状态。但是,在我的笔记本电脑上进行开发时,我正在寻找一种简单的方法来测试连接(无需在设备上进行部署)。
所以,我想到使用navigator.onLine来测试离线/在线业务逻辑。但即使我在笔记本电脑上关掉wifi(没有连接笔记本电脑的LAN线),navigator.onLine仍然会返回true。
有人可以建议我如何使navigator.onLine返回false或以其他方式查明是否有互联网连接?
修改 浏览器是Chrome
答案 0 :(得分:2)
服务代码:
//service to check if device or (browser) is online or offline
.factory('ConnectivityMonitor', function($rootScope, $cordovaNetwork){
return {
isOnline: function(){
if(ionic.Platform.isWebView()){
return $cordovaNetwork.isOnline();
} else {
return navigator.onLine;
}
},
isOffline: function(){
if(ionic.Platform.isWebView()){
return !$cordovaNetwork.isOnline();
} else {
return !navigator.onLine;
}
},
startWatching: function(){
if(ionic.Platform.isWebView()){
$rootScope.$on('$cordovaNetwork:online', function(event, networkState){
console.log("went online");
});
$rootScope.$on('$cordovaNetwork:offline', function(event, networkState){
console.log("went offline");
});
}else {
window.addEventListener("online", function(e) {
console.log("went online");
}, false);
window.addEventListener("offline", function(e) {
console.log("went offline");
}, false);
}
}
}
})
然后在控制器(一个例子)中:
.controller('Map3Ctrl',
function(ConnectivityMonitor) {
if(ConnectivityMonitor.isOnline()){
console.log("online")
}else{
console.log("offline");
}
})
Monitoring Online and Offline States in an Ionic Application