【问题标题】:Checking internet connection with JavaScript [duplicate]使用 JavaScript 检查互联网连接 [重复]
【发布时间】:2014-02-18 12:18:34
【问题描述】:

有没有一种方法可以使用纯 JavaScript 检查互联网连接,而无需从网络请求某些内容?我试过用

alert(navigator.onLine);

但它总是返回true

谢谢!

【问题讨论】:

  • 在线首选项仅检查浏览器是否处于离线模式。我认为您必须执行网络请求才能确定计算机是否在线

标签: javascript browser connectivity


【解决方案1】:

根据您要实现的目标,这可能是一个失败的原因。拥有 1 秒的 Internet 连接并不意味着您将拥有它(想想移动、不稳定的网络、丢包、隧道、拥挤的会议/机场 wifi 等)

您最好对您想要的资源发出异步请求...如果它有效...晕了!...如果它失败或超时,然后处理这种情况。

【讨论】:

    【解决方案2】:

    请尝试下面的代码并更新它是否有效

    function hostReachable() {
    
    
      var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );
      var status;
    
      xhr.open( "HEAD", "//" + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false );
    
    
      try {
        xhr.send();
        return ( xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 );
      } catch (error) {
        return false;
      }
    
    }
    

    【讨论】:

    • 条件失败。当 Wifi 连接但互联网不工作时
    【解决方案3】:

    请看以下链接: https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine

    Chrome Linux - 始终返回 true 对你有帮助吗?

    【讨论】:

      【解决方案4】:

      navigator.onLine 检查您是在线还是离线,如果您在线则返回 true,这类似于说您有一个活动的互联网连接。如果您不在线,则返回 false,这类似于说您没有有效的互联网连接

      如果您的应用需要检测连接,您可以执行以下操作:

      if(navigator.onLine) { //do something }

      【讨论】:

      • navigator.onLine 在 Chrome 和 Safari 中不可靠。在 mozdev 上查找。
      猜你喜欢
      • 1970-01-01
      • 2017-11-30
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多