如何使用javascript或任何库检查用户是否在线?

Str*_* B. 25 javascript jquery offline

我需要一些帮助,如何使用JavascriptjQuery或任何库(如果可用)检查互联网连接.因为我正在开发一个离线应用程序,我希望在用户离线时显示一个版本,如果用户在线则显示另一个版本.

目前我正在使用此代码:

if (navigator.onLine) {
    alert('online');
} else {
    alert('offline');
}
Run Code Online (Sandbox Code Playgroud)

但这种方法检测起来很慢.有时它只是连接到没有互联网的网络,需要5到10秒才能发出警报false(没有互联网).

我看了一下Offline.js库,但我不确定这个库在我的情况下是否有用.我不知道如何使用它

Jam*_*ker 9

我刚刚从Mozilla站点获得了一些代码功能:

window.addEventListener('load', function(e) {
  if (navigator.onLine) {
    console.log('We\'re online!');
  } else {
    console.log('We\'re offline...');
  }
}, false);

window.addEventListener('online', function(e) {
  console.log('And we\'re back :).');
}, false);

window.addEventListener('offline', function(e) {
  console.log('Connection is down.');
}, false);
Run Code Online (Sandbox Code Playgroud)

他们甚至有一个链接,看它工作.我在IE,Firefox和Chrome中尝试过它.Chrome出现的速度最慢,但只有半秒左右.

  • Mozilla 文档:“在 Chrome 和 Safari 中,如果浏览器无法连接到局域网 (LAN) 或路由器,则它处于离线状态;所有其他条件都返回 true。” https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine 无法有效检测互联网是否已关闭,而是您的 LAN 是否已关闭。 (2认同)

Dom*_*ead 9

我认为你应该尝试OFFLINE.js ..它看起来很容易使用,只是尝试一下.

它甚至提供了checkOnLoad在页面加载时立即检查连接的选项.

Offline.check():检查连接的当前状态.

Offline.state:连接"up"或"down"的当前状态

没有尝试过,很高兴知道它是否按预期工作.

编辑在代码中占了一席之地,它使用了这个问题中提出的FAILED XHR REQUEST方法


dme*_*lio 4

看一下检测到互联网连接离线?基本上,向您知道可能已启动的内容(例如 google.com)发出 ajax 请求,如果失败,则表示没有互联网连接。

  • @putvande更准确,它检查互联网连接,而不是网络连接。来自 Mozilla 文档:“在 Chrome 和 Safari 中,如果浏览器无法连接到局域网 (LAN) 或路由器,则它处于离线状态;所有其他条件都返回 true。” 因此,如果我在 LAN 上,但 Internet 连接已断开,则 navigator.onLine 将返回 true。样本答案会说假。 (6认同)