7

我正在使用 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 文件的要求,注释掉了错误加载页面消息部分,它不再出现。我已经尝试了很多谷歌搜索任何相关主题,但没有找到任何相关主题。

我真的很难让这成为可能。请帮帮我!

提前致谢!

4

1 回答 1

10

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

解决方案 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 --如果用户离线,它将为​​假。

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

测试:

  • 火狐

  • Windows 谷歌浏览器

  • Windows IE9 和 IE10

  • 安卓 4.1.1 铬

  • iPad 3 Safari

  • iPad3 铬

于 2013-05-03T20:24:58.290 回答