10

我目前在我的应用程序中使用 Tom Riley 的 Jquery 插件来检测 Internet 连接,它在 Internet Explorer 中运行良好,但在 Google Chrome 中实现它时没有响应。

任何人都可以建议一个更好的检测互联网连接的插件,它在谷歌浏览器(所有浏览器)中完美运行

4

3 回答 3

11

您不需要插件,只需执行以下操作:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
  if (! window.jQuery) {
    alert('No internet Connection !!');
  }
  else {
     // internet connected
  }
</script>

上述工作的原因是因为 jQuery lib 是从需要互联网连接的谷歌 CDN 读取的,如果页面无法读取它,则意味着互联网连接不存在。

更新

您可以执行以下操作:

function checkConnection() {
  var connected = true;
  var img = document.createElement('img');
  img.src = "path to remoate image on your server";
  img.onerror = function() { connected = false; }
  return connected;
}

您可以随时这样使用它:

if (checkConnection()) {
  // connected
}

更新 2

您也可以像这样定期/自动检查它:

setInterval(function(){
  var isConnected = checkConnection(); // checkConnection() comes from above code
  if (isConnected) {
    alert('Connected');
  }
  else {
    alert('Not Connected');
  }
}, 10000); // 10000 = 10 seconds, check for connection every 10 seconds

其他有用的链接:

于 2012-06-08T08:57:52.073 回答
2

checkNet 插件 ( http://tomriley.net/blog/archives/111 ) 适用于所有浏览器,包括 Chrome。它不依赖于查询 google.com(因为 google 在某些国家/地区被封锁,大陆之间的连接可能不可靠!)

如果没有显示错误消息,通常是因为您仍在本地服务器上 - 它在 Internet 上时可以正常工作。

此外,看看你用它做什么会很酷。如果您想分享,请给我一个链接。

于 2012-06-13T20:05:26.173 回答
0

无需下载任何文件或图像,您可以通过一段简单的代码进行检查。

单击下面的“运行代码片段”按钮并查看它的实际效果。

function checkInternetConnection(){
        var status = navigator.onLine;
        if (status) {
            console.log('Internet Available !!');
        } else {
            console.log('No internet Available !!');
        }  
        setTimeout(function() {
            checkInternetConnection();
        }, 1000);
      }
      checkInternetConnection();

编辑 - 没有功能的更简单的方法

setInterval(function(){
    var status = navigator.onLine;
    if (status) {
        console.log('Internet Available !!');
    } else {
        console.log('No internet Available !!');
    }  
}, 1000); // 1000 = 1 seconds, check for connection after every 1 seconds

于 2020-04-25T05:51:39.343 回答