Search code examples
javascriptjqueryasp.net-mvcinternet-explorer-8sammy.js

Why does IE8 running on XP and Win7 Virtual Machine deletes the history while browsing the same site with javascript routing?


I am using sammy.js with my asp.net mvc web application for client-side routing so as to provide single page user experience. I have created a demo application which works fine in IE9+ and other modern browsers. However, while running in IE8 on XP and Win7, I'm facing a strange problem. While browsing this demos site, IE8 remembers the back and forward navigation for initial browsing and then it totally forgets about the browsing history or steps I have taken to reach the current page. So, the back button gets disabled as there is no browsing history linked. This is not happening in other browsers and they remember the pages I'm browsing.

This is the link of the script that I have written where I have defined my sammy.js routes.

The structure of my app is like this - A User:

  • comes to http://www.abc.com/
  • is shown a login page as per #/ route
  • if authenticated, home page is shown which is a result of ajax post action.
  • home-page have many options to go to details page which is the result of ajax post action.

Now, IE8 remembers only some of these steps but keeps deleting the history items in the browsing session on its own. I have tried using the script debugger of IE and no error was showed.

On every route, I have also tried using alert(history.length); which gives different random number not I was expecting like +1 every-time I visit a new page. Then I found this support information on Microsoft's website. Disabling the automatic crash recovery feature didn't helped in this case.

I'm not able to figure out the reason behind this strange problem. The codes works fine for other browsers. I have also tried resetting IE8 on XP and Win7.

It would be really helpful if anyone can tell me what am I missing or doing wrong.

Cheers


Solution

  • I have really tried many things to identify any possible reason of the issue above. Even rewrote all my javascript navigation code and checked server-side code.

    But the only place where I got the solution is at site: enhanceie which states that there is a bug in IE8 which reads like:

    IE0012: IE Travellog broken when navigating back/away from a page with a large POST form If there is a form input field with a value longer than 523,659 characters, when you navigate away from the page, IE may clear the current session's travellog (similar to history), disabling the back and forward buttons. Repros in IE6 & IE7.

    There are following solutions that you can go for:

    • Check for the input field that has lots of characters as mentioned above and solve your problem.
    • If you have control over the system where IE8 will be used, you can add the following registry key on that machine. There is no existing key, so, you need to add a new one:

      [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TravelLog] "MaxSize"=dword:ffffffff

    I am really relaxed to find this information as I spent really long time to solve this issue. Hope this will help someone.