根据浏览器history模拟浏览器后退按钮显隐问题

摘要:
措施:具体思路如下:1。打开页面时,浏览器的history.length为1,按钮隐藏;2.当历史。长度˃1,单击按钮执行历史记录。go(-1);3.当您返回历史堆栈中的第一帧时,按钮将隐藏。为了浏览器的安全性,历史记录不提供确定其当前页面位置的属性。因此,当页面在第一帧打开时,向当前url添加一个参数。当触发按钮点击事件时,该参数可用于确定是否为第一帧的位置。

场景:在APP页面开发中,有一个需求,做一个返回按钮,实现的功能和浏览器的后退按钮相同。

措施:具体思路如下:

          1.开始打开页面时,浏览器的history.length为1,按钮隐藏;

      2.当history.length>1时,点击按钮执行 history.go(-1);

   3.后退到历史记录栈中第一帧时,按钮隐藏。出于浏览器安全性考虑,history中没有给出属性判断其当前页的位置,所以,在开始打开页面,处于第一帧时,在当前url中添加参数,按钮点击事件触发时,根据该参数可判断是否是第一帧的位置。

解释:

一.history对象:

  属性

  • history.length
  • history.state
  • history.scrollRestoration

  方法

  • history.back()
  • history.forward()
  • history.go()
  • history.pushState()
  • history.replaceState()

二.向当前url中追加参数

var newurl = updateQueryStringParameter(window.location.href, 'sp', '2');

window.history.replaceState({
    path: newurl
}, '', newurl);

function updateQueryStringParameter(uri, key, value) {
    if(!value) {
        return uri;
    }
    var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
    var separator = uri.indexOf('?') !== -1 ? "&" : "?";
    if (uri.match(re)) {
        return uri.replace(re, '$1' + key + "=" + value + '$2');
    }
    else {
        return uri + separator + key + "=" + value;
    }
}

免责声明:文章转载自《根据浏览器history模拟浏览器后退按钮显隐问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇团队项目UI[ZZ] NumPy 处理数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ANDROID L——Material Design综合应用(Demo)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Material Design: Material Design是Google推出的一个全新的设计语言,它的特点就是拟物扁平化。 我将Material Design分为例如以下四部分: 主题和布局——ANDROID L——Material...

layer弹出层右上角的关闭按钮怎么没有显示

问题描述:layer弹出层右上角的关闭按钮怎么没有显示,但鼠标移上去又可以点击 解决方式: 这是因为样式中需要一个图标,你的项目中缺少。解决如下;1、下载图标:http://www-x-zi-han-x-net.img.abc188.com/theme/hplus/js/plugins/layer/skin/default/icon.png 另存为。2、找...

Vue指令和事件

/** * 语法糖的概念: * 语法糖是指在不影响功能的情况下,添加某种方法实现同样的; * 使用语法糖,可以简化代码的书写 * 比如 v-on:click='func' @click='func' * v-bind:src :src */ <!-- v-on 可以监听原生DOM事件click,dbclick,keyup,mousemove...

详解 QT 主要类 QWidget

QWidget类是所有用户界面对象的基类,每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 先来看内容。 AD: 2013云计算架构师峰会超低价抢票中 QT 主要类 QWidget 是本文介绍的内容,QWidget类是所有用户界面对象的基类。窗口部件是用户界面的一个原子:它从窗口系统接...

屏蔽微信内置底部前进后退按钮(很迫切的需求)

在使用window.location.href进行页面跳转或者react内部项目使用 this.props.history.push进行页面跳转时,做好的h5页面放在微信里,底部会出选前进后退的按钮,如下图: 废话不多说,解决问题: 第一种情况:如果只是页面之间跳转,使用window.location.replace 代替window.location.h...

CSS3 制作一个边框向周围散开的按钮效果

分析 主要还是运用CSS3的transition, animation, transform还有渐变背景等特性。 由于按钮在鼠标进入时有不同的样式,所以要对其:hover状态运用另外的背景样式 通过对按钮的:after状态添加一个内容为空的元素,并给其一个边框,这样在鼠标进入后我们让这个隐藏的空元素变大直到淡出,就得到我们看到的效果了 构建基本按钮样...