javascript - 使用 Javascript History API 时,新的 URL 内容应该是什么?

标签 javascript ajax html5-history

我正在使用 AJAX 在我的页面中动态加载内容。 (基本上我有一个搜索栏,搜索结果是使用AJAX获得的)。 我想利用 History API,因为在多次搜索(并且还应用排序和过滤器)之后,如果用户按浏览器后退按钮,它会直接将它们带出我的网站,而不是将它们带到上一个搜索结果。 有几个关于使用历史记录 API 的在线资源,但我可以找到有关 URL 的任何信息,需要使用设置

window.history.pushState(dataObj, title, URL);

如果我们只是设置任何 URL,比如 www.mypage.com/value1,那么,这将成为一个假 URL,如果添加书签并稍后使用,它将不起作用。

所以我正在考虑使用以下方法。

1) 将 URL 设置为 www.mypage.com?variable1=value1&variable2=value2 ..... 其中 value1 和 value2 ... 是一些信息,我将其用于 AJAX。(在我的例子中,这些值将是搜索文本以及过滤器和排序信息)

2) 按后退按钮时,检索 URL,使用“?”吐出它和“&”分隔符,并采取相应措施

3)如果这个 URL 也被添加了书签,我可以适本地处理它,因为所有信息都可以作为变量使用。

所以,我的问题是,这是正确的方法吗?还是有更好的(标准)方法来处理这种情况?

最佳答案

这有点固执己见,但我认为你的方法听起来不错。只要用户能够按后退按钮直接访问 URL 以获得相同的结果,那么我认为这是一种非常好的方法,而且我不一定能想到一种方法更好的方法。

事实上,根据我在研究 Google 搜索 javascript 代码后所掌握的情况,他们似乎使用了非常相似的方法。他们使用 history.pushState(...) 将搜索查询 URL 添加到浏览器历史记录中,当初始化窗口时,他们会检查历史记录对象以及 URL 来决定加载哪些搜索结果使用JS。这并不是说 Google 是正确 Web 开发的首选大师,但如果他们使用这样的方法,我认为可以肯定地说您也可以使用它。

如果有人有更好的方法,我肯定会感兴趣,因为这似乎是最好的。

关于javascript - 使用 Javascript History API 时,新的 URL 内容应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887691/

相关文章:

javascript - 弹出覆盖字段

javascript - 为什么在使用相同的 location.href(或空)推送时 window.onpopstate 上的 event.state 为空

jquery - 如何在 popstate 之后不再执行 Ajax 查询

javascript - 用静态字符串替换数组中的最后一个元素

Ajax 页面加载后 JQuery 单击处理程序不工作

javascript - 如何跨多个页面获取数据?

php - 如何在php中使用while循环和submit for in while循环检查记录是否存在

reactjs - react 路由器 : Query Param Match?

javascript - IE9 无法正确找到 DOM 元素

JavaScript 可点击文本