我的浏览器后退按钮有问题。 IE和谷歌浏览器存在问题。 我正在为搜索引擎创建自动加载机制。机制就像谷歌搜索一样。
建筑程序:
1)输入关键字
2)ajax搜索请求
3)响应为json
4)使用json建立结果列表
5)将容器附加到容器
如果我已经构建了结果并重定向到另一个页面并返回到包含结果的页面,则结果会消失。我尝试了许多开发人员描述的解决方案,比如哈希,history.js等等,但每个人都没有工作。
答案 0 :(得分:0)
当您返回时,页面的原始HTML将从缓存中加载。您通过Javascript添加的所有内容都不会存储,因此您必须在页面加载时恢复该修改。
为此您可以使用popstate
事件。当甚至被触发时,您将需要恢复信息。您可以通过重新执行AJAX请求并处理结果来实现。因此,您必须在url(或hash)中保存足够的信息才能再次执行相同的请求。
这也意味着,您可能需要提前做出请求!例如,如果您执行ajax请求以获取列表的项目X,其中X在请求后每次递增(因此您可以在每次单击时获得下一个项目),您将需要确保再次加载所有项目。如果你不这样做,你将只获得缓存页面上的原始项目和AJAXed的最新项目,而中间的项目将丢失。
但是,如果您使用pushState
或replaceState
来存储状态,您还可以存储其他数据。您可以使用它来存储状态的JSON结果,因此您不需要其他请求。无论如何,这是一个优化,并不是严格需要的,所以你应该开始实现在popstate
上触发的AJAX请求。无论如何你都需要它,因为数据可能并不总是与状态一起存储,所以你总是需要AJAX请求作为后备。