使用 html5 历史记录代替哈希 URL 来恢复用户的历史记录
Using html5 history in place of hash urls to restore the history of the user
我们有一个基于查询字符串加载结果的单页应用程序。
查询字符串如下所示:?城市=德里&pn=1
SPA在同一网页上有不同的部分。当用户导航到这些部分时,我们使用哈希更改来维护历史记录。例如:?city=Delhi&pn=1#sort :显示 SPA 的排序参数部分。?city=Delhi&pn=1#filters :显示SPA的过滤器部分。
我们现在计划放弃在 url 中使用哈希更改来维护历史记录,而是开始使用 html5 历史记录 api。
如何使用历史插件替换这些哈希并执行相同的功能?
例如,我尝试使用+号(?city=Delhi&pn=1+sort)。但看起来用户无法为此添加书签,并且页面会中断,因为 api 不处理 + 符号。+ 符号在 Ajax API 请求中被视为空格。
还有什么其他可能性可以优雅地处理它?
对查询字符串上的数据进行编码的标准方法是添加另一个键=值对。
?city=Delhi&pn=1&sort=true
请注意,如果您使用的是历史 API,那么您应该拥有能够生成与 JavaScript 生成的相同视图的服务器端代码。
例如
- 用户到达
/
并获得服务器提供的主页 - 用户点击指向
/?city=Delhi&pn=1&sort=true
的链接,Ajax 将页面转换为另一个页面。 - 用户书签链接
- 用户离开
- 用户改天回到他们的书签,服务器(不是JavaScript)构建
/?city=Delhi&pn=1&sort=true
- 用户点击另一个链接,JS启动
这意味着:
- 站点在初始加载时执行速度更快。您不必加载主页,然后等待JS发出其他请求以将其转换为您最初要求的页面。
- 这是搜索引擎的好食物
- 当JS失败时,它继续工作。
相关文章:
- window.location替换并传递URL历史记录条目中的变量
- Javascript历史记录转换为php行
- 浏览器何时记录历史记录
- 输入类型按钮返回历史记录并返回顶部
- HTML5历史记录-返回上一个完整页面按钮
- asp.net网站文件下载历史记录
- 使用Ajax的后退按钮历史记录,URL中没有散列
- 历史记录和通过JavaScript修改的HTML
- Javascript:历史记录未加载页面
- 通过js设置页面历史记录和页面内容
- 如果没有历史记录,我如何隐藏图像或按钮onclick=;历史.go(-1);
- 将HTML表单发布到iframe会导致浏览器历史记录出现问题
- 如何防止浏览器在历史记录中缓存HTML
- 如何将新的stateObject添加或附加到历史记录中
- 检查浏览器后退按钮历史记录
- React-router 在添加历史记录后不会渲染组件
- 如何返回可用的历史记录状态数
- 引导选项卡不适用于历史记录.返回选项
- 记录 iframe 的历史记录
- 计算历史记录中的页数