我有一个执行ajax调用的搜索页面,然后在页面底部生成结果(动态HTML)。问题是当用户访问结果(另一个站点)然后点击后退按钮时,原始页面和查询就在那里,但动态HTML已经消失。
之前我使用过jquery历史插件。如果用户搜索披萨,则需要在我的网址上添加“#pizza”。然后,只要我的页面加载,它就可以恢复#之后的状态。但这需要重新调整ajax调用,再次进行搜索,并再次构建动态HTML。
当用户点击“返回”结果页面时,结果页面是否与他们离开之前完全一样,是否有可能进行结构化?
答案 0 :(得分:2)
有些浏览器会暂时保留页面状态,有些浏览器不会。或者他们有时会,除非浏览器尝试最小化内存使用。最重要的是,你不能依赖它。
因此,如果您使用mypage.html#content-hash
样式网址用于ajax状态,则必须加载空布局,以便JS处理哈希标记并重建相关页面。这可能会更慢并且需要更多请求,但是该哈希不会发送到服务器,因此需要JS来查看所需的内容。
或者,如果您使用HTML5推送状态API,则可以在不重新加载页面的情况下更改窗口的完整URL。在这种情况下,您的服务器可以将整个页面呈现为与设置为ajax时相同的状态。浏览Github上的一些存储库,你可以看到他们是如何做到这一点的。单击一个文件夹,它会设置动画并且网址会更改。通过URL直接转到子文件夹,页面呈现的子文件夹内容已经存在。
答案 1 :(得分:0)
是的,在搜索结果中生成的链接中添加一个点击处理程序。并将搜索字符串传递给它
然后在处理函数中将字符串保存到cookie变量中。如果用户从单击页面返回,您可以在服务器端搜索结果。因此,它将显示结果而无需第二次调用。