Refresh page ONCE

I would like to implement a JavaScript code which states this: if the page is loaded completely, refresh the page immediately, but only once. This one works fine:

window.onload = function() { if(!window.location.hash) { window.location = window.location + '#loaded'; window.location.reload(); }
} 

but I don't want hash at the end. Any solution?

1

2 Answers

use cookies or localStorage

window.onload = function() { if(!localStorage.loaded) { localStorage.setItem('loaded', 'yes') window.location.reload(); }
} 
6

If first time will loaded then you have to set the hash ('loaded'). The automatically will reload the page. Second time he will found the hash #loaded in the url and dont reload the page again.

To avoid hash in the url you can use cookie or localStorage.

LocalStorage: In this case take a look to the answer from @uingtea: .

window.onload = function() { if(window.location.hash !== '#loaded') { window.location.hash = '#loaded'; window.location.reload(); }
} 

With cookie

function setCookie(cname, cvalue, exdays) { const d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); let expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) { let name = cname + "="; let decodedCookie = decodeURIComponent(document.cookie); let ca = decodedCookie.split(';'); for(let i = 0; i <ca.length; i++) { let c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return "";
}
window.onload = function() { if(getCookie('loaded')) { setCookie('loaded','true',180); window.location.reload(); }
}
5

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like