Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to refresh page using javascript if connected?

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?

like image 269
stackunderflow Avatar asked Dec 10 '25 09:12

stackunderflow


2 Answers

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 */
like image 124
Fabrizio Calderan Avatar answered Dec 11 '25 23:12

Fabrizio Calderan


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

like image 34
Djizeus Avatar answered Dec 11 '25 23:12

Djizeus



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!