热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTML5:触发popstate时刷新页面

如何解决《HTML5:触发popstate时刷新页面》经验,为你挑选了1个好方法。

我有一个像ajax搜索表单:

网址:/ search /

=>用户输入搜索词并单击按钮

=>搜索完成并通过页面div中的ajax显示结果

但是:我还希望用户能够将URL复制并粘贴给朋友并浏览以前的搜索.因此,当触发搜索时,我会更改浏览器地址栏中的URL

/搜索/

/搜索/ Q = yourkeyword

使用:

window.history.pushState("", "Search for "+keyword, "/search/?q="+keyword);

这会将浏览器地址栏中的网址更改为/ search /?q = yourkeywords,并且工作正常.

现在,点击后退按钮,浏览器地址栏再次显示/ search /,这很好.但是页面内容没有重新加载,它仍然显示来自/ search /?q = yourkeyword的结果.

所以我补充说:

window.addEventListener("popstate", function(e) 
{   location.reload();
});

这是正确的方法吗?它在FF和Chrome等桌面浏览器中运行良好,但是在iOS中,popstate事件是在/ search /上首次加载searchform时触发的,导致该页面无法重新加载.

什么是正确的方法呢?



1> troelskn..:

最简单的解决方案是在使用时设置全局变量pushState.然后,在onpopstate处理程序中,检查是否已设置.例如:

window.historyInitiated = true;
window.history.pushState("", "Search for "+keyword, "/search/?q="+keyword);
...
window.addEventListener("popstate", function(e) {
  if (window.historyInitiated) {
    window.location.reload();
  }
});


推荐阅读
author-avatar
mobiledu2502908141
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有