我正在使用AJAX在我的页面中动态加载内容。 (基本上我有一个搜索栏,搜索结果是使用AJAX获得的)。 我想使用History API,因为,经过多次搜索(还应用排序和过滤),如果用户按下浏览器后退按钮,它会将它们直接从我的网站中取出,而不是将它们带到之前的搜索结果中。 有几个关于使用历史API的在线资源,但我可以找到有关URL的任何信息,需要使用
设置window.history.pushState(dataObj, title, URL);
如果我们只是设置任何网址,例如www.mypage.com/value1,那么,这将成为一个虚假的网址,如果加入书签并稍后使用,则无效。
所以我考虑使用以下方法。
1)将URL设置为www.mypage.com?variable1=value1&variable2=value2 ..... 其中value1和value2 ...将是我用于AJAX的一些信息。(在我的情况下,这些值将是搜索文本以及过滤器和排序信息)
2)按下后退按钮,检索URL,使用“?”进行吐出和“&”分隔符,并采取相应的行动
3)如果此URL也被加入书签,我可以适当地处理它,因为所有信息都可以作为变量使用。
所以,我的问题是,这是一种正确的方法,还是有更好(标准)的处理方式?
答案 0 :(得分:1)
这有点自以为是,但我认为你的方法听起来不错。只要用户能够按下后退按钮和直接访问URL以获得相同的结果,那么我认为这是一种非常好的方式,我不一定能想到更好的方式。
事实上,从查看Google搜索javascript代码后我所掌握的情况来看,似乎他们使用的方法非常相似。他们使用history.pushState(...)
将搜索查询URL添加到浏览器历史记录中,当他们初始化窗口时,他们会检查历史记录对象以及URL,以确定使用JS加载哪些搜索结果。这并不是说谷歌是适当的网络开发的首选大师,但如果他们使用这样的方法,我认为你可以很好地使用它。
如果有人有更好的方法,我肯定会感兴趣,因为这似乎是最好的。