jquery - 使用 jQuery 检查 Internet 连接是否存在?

标签 jquery browser offline internet-connection

如何使用 jQuery 检查是否有 Internet 连接?这样我可以有一些条件说“在生产过程中使用谷歌缓存的 JQuery 版本,在开发过程中使用该版本或本地版本,具体取决于 Internet 连接”。

最佳答案

您的具体情况的最佳选择可能是:

就在您收盘前</body>标签:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>

鉴于您的问题围绕 jQuery,这可能是最简单的方法。

如果您想要更强大的解决方案,您可以尝试:

var online = navigator.onLine;

阅读有关 W3C's spec on offline web apps 的更多信息,但请注意,这在现代网络浏览器中效果最佳,但在旧版网络浏览器上这样做可能无法按预期工作,或者根本无法工作。

另外,向您自己的服务器发出 XHR 请求并不是一种测试连接性的方法。考虑到其他答案之一表明 XHR 的故障点太多,如果您的 XHR 在建立连接时存在缺陷,那么无论如何在日常使用期间它也会存在缺陷。如果您的站点因任何原因无法访问,那么您在同一台服务器上运行的其他服务也可能无法访问。这个决定取决于你。

我不建议向其他人的服务发出 XHR 请求,即使是 google.com。向您的服务器发出请求,或者根本不发出请求。

“在线”是什么意思?

关于“在线”的含义似乎有些困惑。考虑到互联网是一堆网络,但有时您使用的是 VPN,无法访问“一般”互联网或万维网。公司通常有自己的网络,与其他外部网络的连接有限,因此您可能被视为“在线”。在线仅需要您连接到一个网络,而不是您尝试连接的服务的可用性或可达性。

要确定是否可以从您的网络访问主机,您可以这样做:

function hostReachable() {

  // Handle IE and more capable browsers
  var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );

  // Open new request as a HEAD to the root hostname with a random param to bust the cache
  xhr.open( "HEAD", "//" + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false );

  // Issue request and handle response
  try {
    xhr.send();
    return ( xhr.status >= 200 && (xhr.status < 300 || xhr.status === 304) );
  } catch (error) {
    return false;
  }

}

您也可以在这里找到要点:https://gist.github.com/jpsilvashy/5725579

本地实现详情

有些人评论说,“我总是被退回假”。那是因为您可能正在本地服务器上对其进行测试。无论您向哪个服务器发出请求,您都需要能够响应 HEAD 请求,如果您愿意,当然可以将其更改为 GET。

关于jquery - 使用 jQuery 检查 Internet 连接是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2384167/

相关文章:

jquery - 在Jquery中动态隐藏数据表列和列数据

javascript - 关闭浏览器选项卡时执行操作(Javascript)

ios - 当推送通知不可用时通知用户

css - 在 Chrome 中找不到 CSS 错误

ruby - 在可移植设备上离线查看 RDoc (Ruby Docs) (iOS/Android/etc)

firebase - 暂时停用 Firebase 数据库

javascript - 如何在滚动列表中选择可见元素

javascript - 动态分配变量到jquery自动完成查询字符串

javascript - 带有 fiddle 的 header 中的 jQuery 移动搜索输入( header 的重叠/覆盖)

javascript - 一个html中有很多div