我有一个像这样的ajax搜索表单:
网址: /search/
=>用户输入搜索词并点击按钮
=> 搜索完成后,通过ajax在页面上的一个div中显示结果
但是: 我也希望用户能够复制&paste URL 给好友,并浏览之前的搜索结果。所以当触发搜索时,我会从浏览器地址栏中将URL更改为:
/search/?q=yourkeyword
使用以下方法:
window.history.pushState("", "Search for "+keyword, "/search/?q="+keyword);
这将在浏览器地址栏中更改url为/search/?q=yourkeywords,并且运行良好。
现在,点击后退按钮,浏览器地址栏会再次显示/search/,这很好。 但是页面内容没有重新加载,它仍然显示来自/search/?q=yourkeyword的结果。
所以我添加了:
window.addEventListener("popstate", function(e)
{ location.reload();
});
这是正确的方法吗?在桌面浏览器(如FF和Chrome)中运行良好,但例如在iOS中,popstate事件在/search/上第一次加载searchform时被触发,导致页面不断刷新。
什么是正确的做法?