1

我正在使用 History.js 和 Jquery(以及一点 GWT),我使用 History.pushState() 方法来存储 Ajax 有效负载,然后在 statechanged 事件中根据有效负载绘制屏幕。现在在我的应用程序中,浏览器的后退和前进按钮可以正常工作。

奇怪的是,当用户单击我的应用程序中的链接,将他们带到我的应用程序之外的页面(相同域但另一个应用程序)时,他们出去,查看页面,然后点击返回按钮重新进入我的应用程序。

我的应用程序加载后,它没有收到 popstate 或 statechange 事件,但不知何故,浏览器实际上正在绘制屏幕,​​使其与离开我的应用程序之前的样子完全相同。

我想了解这里发生了什么。

[编辑:我错了。我的代码正在执行,我确实收到了 statechange。我对 History.js 有一些假设,现在我意识到要正确编码,您应该收到 AJAX 有效负载,然后调用 pushstate 将其放入堆栈。然后您的 statechange 事件将触发,您应该在 statechange 函数中从堆栈中读取状态并相应地绘制屏幕。当您正常运行您的应用程序时将执行相同的代码,并且当用户点击后退按钮时将执行相同的代码。]

4

2 回答 2

0

当用户使用后退按钮返回应用程序时,听起来浏览器正在显示应用程序的缓存状态,而不是完全重新加载它。

您可以通过进入应用程序,单击外部应用程序链接,点击浏览器后退按钮返回,然后点击刷新来测试这一点。如果它在重新加载时更改应用程序状态,它会告诉您浏览器正在缓存应用程序状态而不是重新加载。

于 2013-06-28T20:30:45.037 回答
0

您必须阅读 URL,然后进行相应处理。这就像您直接从地址栏深度链接到您的应用程序一样。

于 2013-06-28T17:49:10.783 回答