我有一个 HTML5 应用程序,它操纵浏览器历史记录以显示 Ajax 调用的正确 URL。这很好用,但是当我的应用程序具有指向外部站点的超链接时会出现问题,例如http://www.google.com。发生这种情况时,历史记录如下所示:
我的应用页面 A -> 我的应用页面 B -> Google
当用户点击一次后退按钮时,一切都很好。显示了我的应用页面 B。
但是当用户第二次点击后退按钮时,URL 会改变,但页面不会改变。我的应用程序无法进行正确的 Ajax 调用来显示我的应用程序页面 A 的状态,因为从未调用过 onpopstate 处理程序。这是因为当浏览器返回“我的应用程序页面 B”时,处理程序未初始化(该返回事件没有触发任何事件,因此我无法重新初始化处理程序。)
这种体验适用于 Chrome,但我没有理由相信它是 Chrome 特有的。有没有办法解决这个问题?
我知道像 Gmail 这样的应用程序会在新窗口中打开所有外部超链接。但是我的应用程序的要求不允许我这样做。