【问题标题】:How to detect device's internet connection in jQuery Mobile如何在 jQuery Mobile 中检测设备的互联网连接
【发布时间】:2013-04-28 06:19:07
【问题描述】:

我正在使用 HTML5、CSS3、jQuery Mobile、jQuery UI、ASP.NET、C# 和一些 jQuery 插件为调查创建这个简单的移动网页。要求之一是显示一个弹出/对话框(javascript 警报或 jQuery 移动对话框,或者如果它是 jQuery UI 对话框则更好),只要设备(特别是 Android)没有互联网连接,就会通知用户。目前我有这个代码:

<link rel="stylesheet" href="../Scripts/jqueryui/jquery-ui.css" type="text/css" media="all" />
<link rel="stylesheet" href="../Scripts/jquery.mobile-1.1.0.css" />
<script src="../Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script src="../Scripts/jquery.mobile-1.1.0.js" type="text/javascript"></script>
<script src="../Scripts/jqueryui/jquery.min.js" type="text/javascript"></script>
<script src="../Scripts/jqueryui/jquery-ui.min.js" type="text/javascript"></script>
<script src="../Scripts/jquery.validate.js" type="text/javascript"></script>

<script type="text/javascript">
    var online = window.navigator.onLine;
    if (!online) {
        alert('Please check your internet connection and try again.');
    }
    function checkInternet() {
        var online = window.navigator.onLine;
        if (!online) {
            alert('Please check your internet connection and try again.');
        }
    }
</script>

然后我将 JavaScript 函数放在表单的 onsubmit 事件上:

<form id="frmSurvey" runat="server" class="validate" onsubmit="checkInternet()">

当我在桌面/PC 浏览器上查看它时它可以工作,但在移动设备上根本不工作。 jQuery Mobile 错误加载页面。

因为,这不是我调整 jQuery Mobile 文件的要求,将错误加载页面消息部分注释掉,它不再出现。我已经尝试用 Google 搜索很多相关主题,但没有找到任何相关主题。

我真的很难做到这一点。请帮帮我!

提前致谢!

【问题讨论】:

  • 你如何在移动设备上测试它(它是否托管在某个地方,复制到你的设备上?)
  • 其实是托管的。

标签: javascript jquery jquery-ui jquery-mobile


【解决方案1】:

很少有解决方案可以满足您的需求。

解决方案 1

此解决方案需要 jQuery,因为您使用的是 jQuery Mobile,所以它可以作为一种魅力。

$.ajaxSetup({
    timeout: 1, // Microseconds, for the laughs.  Guaranteed timeout.
    error: function(request, status, maybe_an_exception_object) {
        if(status == 'timeout')
            alert("Internet connection is down!");
    }
});

有关更多信息,请查看有关 ajaxSetup 的官方文档。

解决方案 2

这个有点棘手,因为它依赖于 HTML5 浏览器的实现。

基本上你需要检查这个值是真还是假:

window.navigator.onLine -- 如果用户离线,则为false

工作示例:http://jsfiddle.net/Gajotres/VXWGG/1/

测试日期:

  • Windows 火狐

  • Windows 谷歌浏览器

  • Windows IE9 和 IE10

  • Android 4.1.1 Chrome

  • iPad 3 Safari

  • iPad3 铬

【讨论】:

  • 根据thisthisthisnavigator.onLine,虽然是 HTML5 的一部分,仅在 Chrome 和基于 WebKit 的浏览器中得到正确支持 !其他浏览器总是返回true 或者 -- 当Work Offline 模式被禁用时返回true 并且在它被启用时返回false,无论实际连接如何。
  • 我已经使用a simple jsFiddle example 验证了这一点,这是我发现的(不是我的)。它在 Chrome 中运行良好,在 Firefox 中完全失败(总是返回 true,因为我没有启用 Work Offline)。我不知道,如果这在 IE 中工作,因为......它像一个可怜的乞丐一样挂在任何 jsFiddle 页面(蹩脚,蹩脚的浏览器)上! :]
  • 请注意,ajaxSetup 的文档目前声明“我们强烈建议不要使用此 API”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2012-05-18
  • 2012-01-17
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
相关资源
最近更新 更多