I have a web page that i want it to refresh every 2 minutes, using the following code:
location.reload();
The problem is that I assume that the user is connected; but if it happened that s/he is not connected online the page will fail and give the default browser(no connection error page ); and the page will never refresh except manually by the user
can i include a ping mechanism to decide weather to refresh or not?
You can use navigator.onLine to detect a network connection
setInterval(function() {
if (navigator.onLine) {
location.reload();
}
}, 120000); /* 120000 ~> 2 minutes */
otherwise, you may use instead an HEAD ajax request to a same-domain resource and refresh the page only if the response return a 200/304 status, e.g.
setInterval(function() {
$.ajax({
url : "/favicon.ico", /* or other resource */
type : "HEAD"
})
.done(function() {
location.reload();
});
}, 120000); /* 120000 ~> 2 minutes */
One possibility is to send a query to your server or a very reliable server and check if you get a reply.
The problem with navigator.onLine is that it tells the browser status, but the browser may have an online status while there is no network.
See: Detect Internet Connection as in Gmail Javascript
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With