【发布时间】:2012-07-10 18:03:44
【问题描述】:
首先,我知道有些库为location.pushState/popState(History.js、Hash.js、jQuery hashchange)提供了 polyfill,所以请不要只链接到这些。
我需要一个更强大的库来在 RIA 中实现以下目标:
- 用户点击链接
- 通过 Ajax 通知库并加载上下文(没有完全重新加载!)
- 所有
<a>元素都与单击处理程序一起使用,该处理程序- 防止在 2. (
preventDefault) 中重新加载页面和 - 为旧版浏览器调用
location.pushState/ 设置 location.hash
- 防止在 2. (
- 加载的内容插入页面并替换当前内容
- 继续 1。
此外,之前加载的内容应在用户返回时恢复。
例如,在 Internet Explorer Google+。
有什么比这更接近的吗?我需要对 IE8、FF10、Safari 5 和 Chrome 18 的支持。此外,它应该具有 MIT 或 Apache 等许可许可证。
【问题讨论】:
-
作为旁注,Google+ apparently uses their Closure library,但似乎涉及很多手动操作。
-
您希望它如何处理表单提交或其他非 GET 请求?
-
@ScottSauyet 我没有考虑过。猜猜这是一个不同的故事,但如果有一个解决方案也能涵盖这一点,我会非常高兴。
-
@Pumbaa80,对于我提供的答案,您可以通过
addToHistory(id, data, title, url, options);方法手动将任何内容添加到历史记录中。在表单提交期间,使用该 AjaxTCR 库 API 方法来处理这些非缓存的历史位置/对象。 -
您不需要库,我相信您提到的其中一个库 + 100 行 js 可以完成这项工作
标签: cross-browser javascript browser-history