我有一个HTML5应用程序,它操纵浏览器历史记录以显示Ajax调用的正确URL。这很好,但是当我的应用程序超链接到外部网站时会出现问题,例如http://www.google.com。发生这种情况时,历史是这样的:HTML5历史记录,后退按钮和外部链接
我的应用页面A - >我的应用页面乙 - >谷歌
当用户点击后退按钮一次,一切都很好。显示我的应用程序页面B.
但是,当用户第二次点击后退按钮时,URL会更改,但页面不会更改。我的应用程序无法进行适当的Ajax调用来显示My App Page A的状态,因为onpopstate处理程序从未被调用过。这是因为当浏览器返回到我的应用程序页面B时没有初始化处理程序(在该事件中没有事件触发,所以我无法重新初始化处理程序。)
这种体验与Chrome有关,但我没有理由相信它是针对Chrome的。有没有解决这个问题的方法?
我知道像Gmail这样的应用程序会在新窗口中打开所有外部超链接。但是我的应用程序的要求不允许我这样做。
除popstate处理程序外,还应该使用onload处理程序,并且[可能需要某个卸载处理程序](http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-后退按钮)来中断浏览器缓存。 – user123444555621
我不明白为什么'onpopstate'从来没有被叫过。每次用户更改位置时都应该调用它。 –