0

我有一个搜索页面,它执行 ajax 调用,然后在页面底部生成结果(动态 HTML)。问题是当用户转到一个结果(另一个站点)然后点击后退按钮时,原始页面和查询在那里,但动态 HTML 消失了。

我以前使用过 jquery 历史插件。如果用户搜索披萨,这需要将“#pizza”附加到我的 URL。然后每当我的页面加载时,它可以从 # 之后的状态恢复状态。但这需要重新进行 ajax 调用,再次进行搜索,并再次构建动态 HTML。

是否有可能构建事物,以便当用户点击“返回”时,结果页面会立即与他们离开之前完全一样?

4

2 回答 2

2

有些浏览器会保留页面状态,有些则不会。或者他们有时会,除非浏览器试图最小化内存使用。归根结底,你不能依赖它。

因此,如果您将mypage.html#content-hash样式 url 用于 ajax 状态,则必须在 JS 处理哈希标记并重建相关页面时加载空布局。这可能会更慢并且需要更多请求,但是该哈希不会发送到服务器,因此需要 JS 来查看需要什么内容。

或者,如果您使用 HTML5 推送状态 API,您可以更改窗口的完整 URL,而无需重新加载页面。在这种情况下,您的服务器可以将整个页面呈现为与设置为 ajax 相同的状态。浏览 Github 上的一些存储库,您可以了解它们是如何做到这一点的。单击一个文件夹,它会在其中动画化,并且 url 会更改。通过 URL 直接转到子文件夹,页面将呈现该子文件夹的内容。

于 2012-05-10T18:55:01.260 回答
0

是的,在搜索结果生成的链接中添加点击处理程序。并将搜索字符串传递给它

然后在处理函数中将字符串保存到 cookie 变量中。如果用户从点击页面返回,您可以在服务器端搜索结果。因此,它将在没有第二次调用的情况下显示结果。

于 2012-05-10T18:57:28.047 回答