我正在使用 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/