• 关于浏览器的history


    最近遇到一个很奇特的问题:app上一个按钮绑定了一个链接,现在需要更换这个链接,但是app不支持更换链接,那么从前端角度考虑,我采用加载该页面脚本,然后跳转到新的页面,但是这样做会有一个问题,跳到自信的页面后点击返回按钮会一直跳到新的页面,导致返回按钮失效。后来查看资料使用了window.location.replace()方法,这种方法在谷歌浏览器是可以的,但是在app里面还是会存在上面的问题。
    最后我从window对象的history入手解决了这个问题。

    即history.replaceState();方法,这个方法接受三个参数,第一个是状态对象,第二个是页面标题,第三个是页面链接。具体代码如下

    if (history.replaceState) {
       history.replaceState(null,document.tittle,"http://******");  
       history.go(0);  
    } else {
      window.location.replace("http://*****");
    }

    history.replaceState();发放会替换当前页面的浏览记录,及页面标题替换为:document.tittle,地址栏的链接替换为“http://****”,至于是不是存在“http://****”则不会去验证的;history.go(0)做到了页面刷新,及刷新我想看到的页面,history.go(1)前进一页,history.go(-1)后退一页,这样,用户进入了老的页面但是去自动跳转到我希望出现的新的页面,而且浏览器的历史记录里面是记录的新的页面的地址,完美解决。

    参考链接:https://developer.mozilla.org/zh-CN/docs/Web/API/History

  • 相关阅读:
    第一部分 Linux的规划与安装
    第二部分 Linux 文件、目录与磁盘格式
    for in 遍历对象
    时间
    javaScript模块化
    Hbuilder将移动app或者web项目打包
    echarts的通用属性的介绍
    echart的x轴或y轴区间标签如何从大到小排列
    数组的sort()排序
    解决vscode下载很慢的问题
  • 原文地址:https://www.cnblogs.com/zhangbob/p/9268348.html
Copyright © 2020-2023  润新知