Vinnaren i pepparkakshustävlingen!
2017-03-12, 15:29
  #1
Medlem
Har någon ett bra tips på vilken metod för automatiskt refresh av en hemsida som är lämplig.

Idag kör jag med en simpel <meta http-equiv="refresh" content="300" />
Detta används till en sida som visar en graf, som uppdateras ganska ofta, därav att jag kör med var 5 minut.

Detta fungerar jue good enough för mina behov förutom en sak som jag märkt på sistonde.

Har jag denna sida igång på min telefon så fullkomligt dräneras batteriet av Chrome.

Jag tänkte om man istället bara uppdatera sidan var 5 minut om sidan har fokus, om den inte är i fokus så skit i refreshen typ, eller liknande.

Låter det lämpligt eller någon som har någon annan rolig lösning?

Jag är inte speciellt duktig på programmering i allmänhet eller html/php/css/asp i synnerhet. Men har ganska bra koll på datorer i övrigt. Så det får gärna vara någon lösning som inte är allt för krånglig att implementera.
Citera
2017-03-12, 15:54
  #2
Medlem
Om du är novis på programmering så är väl META refresh ett bra val. Annars så är ju AJAX-update ett bättre sätt client-side. Eller om du ska uppdatera databaser osv så kör med php cron job t.ex.
Citera
2017-03-15, 13:40
  #3
Medlem
Sane?s avatar
Använd en kombination av dessa:
https://www.w3schools.com/js/js_timing.asp
https://www.html5rocks.com/en/tutori...ibility/intro/
https://www.w3schools.com/jsref/met_loc_reload.asp
__________________
Senast redigerad av Sane? 2017-03-15 kl. 14:06.
Citera
2017-03-15, 16:19
  #4
Medlem
Abbadohns avatar
Av ovan länkar. Ej testat.

Kod:
function getHiddenProp(){
    var prefixes = ['webkit','moz','ms','o'];
    
    // if 'hidden' is natively supported just return it
    if ('hidden' in document) return 'hidden';
    
    // otherwise loop over all the known prefixes until we find one
    for (var i = 0; i < prefixes.length; i++){
        if ((prefixes[i] + 'Hidden') in document) 
            return prefixes[i] + 'Hidden';
    }

    // otherwise it's not supported
    return null;
}

function isHidden() {
    var prop = getHiddenProp();
    if (!prop) return false;
    
    return document[prop];
}

// use the property name to generate the prefixed event name
var visProp = getHiddenProp();
if (visProp) {
  var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange';
  document.addEventListener(evtname, visChange);
}

function refreshPage() {
   location.reload();
}

function visChange() {
   var body = document.getElementByName('body');
   if (body) {
      var refreshVar = setInterval(refreshPage, 300000);
      if (isHidden())
         clearInterval(refreshVar);
   }
}
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback