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