How to detect device's internet connection in jQuery Mobile

javascript, jquery, jquery-mobile, jquery-ui

Solution

There are few solutions that will suite your need.

Solution 1

This solution requires jQuery and because you are using jQuery Mobile it will work as a charm.

$.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!");
    }
});

For more info take a look at this official documentation about ajaxSetup.

Solution 2

This one is little bit tricky because it depends on HTML5 browser implementation.

Basically you need to check if this value is true or false:

window.navigator.onLine -- it will be false if the user is offline.

Working example: http://jsfiddle.net/Gajotres/VXWGG/1/

Tested on:

Windows Firefox

Windows Google Chrome

Windows IE9 and IE10

Android 4.1.1 Chrome

iPad 3 Safari

iPad3 Chrome

Problem

I am creating this simple mobile web page for a survey using HTML5, CSS3, jQuery Mobile, jQuery UI, ASP.NET, C# and some jQuery Plugins. One of the requirements is to show a pop-up/ dialog (either javascript alert or a jQuery mobile dialog or much better if it's a jQuery UI dialog) that will notify user whenever there is no internet connection the device (specifically Android). Currently I have this code: ``` <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> ``` then I put the JavaScript function on the form's onsubmit event: ``` <form id="frmSurvey" runat="server" class="validate" onsubmit="checkInternet()"> ``` It's working when I view it on a desktop/ PC browser but doesn't work on mobile at all. The jQuery Mobile error loading page. Since, this ain't the requirment I tweaked the jQuery Mobile file commented out the error loading page message part and it doesn't appear anymore. I've tried Google-ing a lot searching for any related topics but not found any. I'm really having a hard time making this possible. Please help me guys! Thanks in advance!

Original source

Related problems