加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使用angularJs检查用户是否有互联网连接

发布时间:2020-12-17 09:17:02 所属栏目:安全 来源:网络整理
导读:当用户尝试在没有Internet连接的情况下登录时,我只需要检查他/她是否已连接到Internet. 我尝试了以下代码: if (status == '404') { $scope.error="No internet connection"; return false;} 但即使我的Web服务无法连接,此状态404也会出现.我需要区分两者,如
当用户尝试在没有Internet连接的情况下登录时,我只需要检查他/她是否已连接到Internet.

我尝试了以下代码:

if (status == '404') {
    $scope.error="No internet connection";
    return false;
}

但即使我的Web服务无法连接,此状态404也会出现.我需要区分两者,如果是用户的互联网连接问题或Web服务连接问题.

使用navigator.onLine

您可以使用navigator.onLine并将其包装在辅助变量上,如下所示(Credits to this answer)

myApp.run(function($window,$rootScope) {
      $rootScope.online = navigator.onLine;
      $window.addEventListener("offline",function () {
        $rootScope.$apply(function() {
          $rootScope.online = false;
        });
      },false);
      $window.addEventListener("online",function () {
        $rootScope.$apply(function() {
          $rootScope.online = true;
        });
      },false);
});

然后在控制器中观看它:

$scope.$watch('online',function(newStatus) { ... });

但这只是一个肮脏的检查,以了解PC是否实际连接到网络,而不是意味着互联网正在工作.

使用假的AJAX请求

您可以模拟向浏览器发出虚假请求的服务(警告:下面未经测试的代码)

myApp.service('Internet',function($http){
  this.IsOk = function () {
    return $http({ method: 'HEAD',url: '/' + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000) })
    .then(function(response) {
      var status = response.status;
      return status >= 200 && status < 300 || status === 304;
    });
  }
});

然后在这种情况下使用一些东西:

myApp.controller('TestController',function(Internet){

  Internet.IsOn().then(function(isok){
    if(isok) {...} else {...}
  });

});

this link请求模拟代码.

另请注意,使用localhost无法正常工作,因为即使断开连接到Internet,服务器也能正常工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读