How can I ignore window.onpopstate on page load?
To react on popstate
event, you need to push some state onto the session history.
For example add this line to the document ready section:
history.pushState(null, null, window.location.pathname);
Not ideal, but it works in Chrome, Firefox and other browsers as well.
Then the event is fired correctly when user clicks on Back or Forward button, also when history.back()
, history.forward()
, history.go()
methods are called manually. Each time when popstate
has been invoked, you have to push another state again to make it working.
See also:
- Single-Page Apps and HTML5 pushState
- How to Detect Browser Back Button event - Cross Browser
Check for boolean truth of event.state
in popstate
event handler:
window.addEventListener('popstate', function(event) {
if (event.state) {
alert('!');
}
}, false);
To ensure this will work, always specify a non-null
state argument when calling history.pushState()
or history.replaceState()
. Also, consider using a wrapper library like History.js that provides consistent behavior across browsers.
I had a similar problem and i had to validate to make sure if page was loaded completely.
I used something like this :
var page_loaded = false;
window.onpopstate = function(event){
if(!page_loaded){
page_loaded = true;
return false;
}
//Continue With Your Code
}