Reputation: 2800
I would like to refresh a page after it got back into the focus. For the refreshing part I thought I might just use:
location.reload();
The tricky part is how do I determine when to refresh?
First the window has to loose the focus (which could be determined through .blur()
I assume).
Only after the window which lost focus gets back into focus should trigger the refresh of itself. Can I use .focus()
on location? Or do I have to use something else here?
How can I combine these two cases?
What would your approach be?
Upvotes: 20
Views: 32117
Reputation: 51
@Eamonn 's approach works good for chrome as mentioned by him.
For Firefox:
window.disableResetPrompt;
window.onblur= function() {window.onfocus= function () {location.reload(true)}};
Upvotes: 3
Reputation: 868
In my development environment I add this snippet of JS to a page - whenever the page becomes active after becoming inactive it reloads, so for example if you type in your text editor then click back onto your browser the page will reload once without an infinite loop. It also works when chaining active tab or active window within the same browser session.
window.onblur= function() {window.onfocus= function () {location.reload(true)}};
As stated above this does depend on browser implementation but works fine in chrome.
Upvotes: 21
Reputation: 9622
Try this:
var blurred = false;
window.onblur = function() { blurred = true; };
window.onfocus = function() { blurred && (location.reload()); };
This only reloads the page if it has been hidden
I don't recommend binding to the window focus in jQuery, the Page will reload on pretty much every user action.
Update
This heavily relies on the browser implementation of window.onfocus and window.onblur. Webkit may not support the onblur event (in my chromium it didn't) where firefox calls a blur if the page is hidden.
Upvotes: 30