【发布时间】:2015-04-20 12:46:31
【问题描述】:
我有一个 ajax 搜索表单,例如:
网址:/搜索/
=> 用户输入搜索词并点击按钮
=> 搜索完成并通过 ajax 在页面上的 div 中显示结果
但是:我还希望用户能够将 URL 复制并粘贴给朋友并浏览以前的搜索。因此,在触发搜索时,我将浏览器地址栏中的 url 从
/搜索/
到
/search/?q=你的关键字
使用:
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/ 上第一次加载搜索表单时触发,导致该页面无休止地重新加载。
正确的做法是什么?
【问题讨论】:
标签: javascript ajax html