Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IE history push state

I have a webpage where the user has the possibility to display the terms and conditions without reloading the page, via AJAX. That, in itself, is no problem, however, I am also trying to push a history state.

That works fine in most browsers, except in IE. For some inexplicable reason, there, the content is loaded via AJAX, but also, a new tab is opened with the previous page. How can I fix this?

You can see the example on this webpage ( http://galaxy-battle.de ), try clicking on "T&Cs" in the "Join"-box.

like image 776
arik Avatar asked Jul 28 '12 22:07

arik


Video Answer


2 Answers

IE9 and below doesn't support pushState. You have an exception when calling the following line

window.history.pushState(null, null, pathFullPage);

SCRIPT438: Object doesn't support property or method 'pushState' ?terms_and_conditions, line 62 character 21

You may probably be interesting looking on some workarounds discussed at Emulate/polyfill history.pushstate() in IE

like image 72
Sergei Grebnov Avatar answered Dec 12 '22 05:12

Sergei Grebnov


Old but still current question. I just want to say I would recommend not to try to emulate pushState on IE.

Instead of that, you can use a feature detection :

  1. if history.pushState is not null (browser supports pushState), you use it and load your content with nifty javascript

  2. if history.pushState is null (browser does not support pushState), you change url / follow the link and make a full page change

Of course, this means IE<=9 users won't have all the cool animations other users have. But the question I want to ask is : do you want to see on the net links to your website containing # ?

Users may think your app is useful and paste links to it on the web. That's cool, because it brings you some google juice. Now, if that user uses IE and you use history.js, user will paste a link containing a hash.

This will defeats proper indexation of public pages of your app, and also will look ugly. My personal opinion is that having a js animation or lightbox for IE users doesn't worth those trade off.

like image 44
kik Avatar answered Dec 12 '22 04:12

kik