js监听浏览器后退事件
来源:互联网 发布:给男朋友织围巾知乎 编辑:程序博客网 时间:2024/05/18 21:48
最近需求需要,需在浏览器(web 和 h5手机端)实现回退弹框
网上很少找到这个需求,找到的也是有bug的,最后解决了,分享一下问题和解决方案
用到的函数:window.history.pushState
网上有个方法测试了一下:
$(document).ready(function(e) { var counter = 0; if (window.history && window.history.pushState) { $(window).on('popstate', function () { window.history.pushState('forward', null, '#'); window.history.forward(1); alert("不可回退"); }); } window.history.pushState('forward', null, '#'); //在IE中必须得有这两行 window.history.forward(1);});
有一个bug就是手机上面不能正常的弹框
在网上找了一下问题,分享文章:popstate事件在webkit中的诡异行为
解决方法:设置了一个siteTimeout,本人刚测试的时候,设置了一个setTimeout=1也不知道为什么还是无效,于是把时间改成了1000,可以正常弹框了.(不过是为什么会有这个原因,具体还没有查到,因为有的设置1是可以正常弹框了,有知道为什么的可以告知一下)
我的解决方案的js:
"pushState" in window.history && ( window.history.pushState({ title: document.title, url: location.href }, document.title, location.href), setTimeout(function () { window.addEventListener("popstate", function (a) { var is_guest = <?php echo $is_guest;?>; if (is_guest == 1) { $('.pop_UpLevel').show(); //弹框的需求 } else { $('.pop_more').show(); } return false; }) }, 1000) );问题:用这个方法,就是每次点击别的弹框,也会出现后退的这个弹框的需求(本人未解决,所以用了一个比较笨的方法,就是每次别的样式的弹框都对退后的弹框hide,有点笨,但是解决了问题)
嘻嘻,如果有上面2个问题的解决方案的牛牛,也告知一下我,互相学习一下,谢谢啦~~~~~~
0 0
- js 监听浏览器后退事件
- js监听浏览器后退事件
- js 监听浏览器后退事件
- JS监听手机端浏览器的后退按钮的事件方法
- JS监听手机端浏览器的后退按钮的事件方法
- 监听浏览器后退按钮
- js监听浏览器退出事件
- JS监听关闭浏览器事件
- JS监听关闭浏览器事件
- JS监听关闭浏览器事件
- js监听浏览器滚轮事件
- JS监听关闭浏览器事件
- js监听浏览器关闭事件
- 浏览器后退事件
- js 浏览器后退
- JS监听浏览器刷新、关闭事件
- js监听和禁用浏览器回车事件
- js里跨浏览器事件监听
- Kafka 学习应用笔记(一)
- SystemUI 之 BrightnessDialog、BrightnessController
- antique reduction
- RocketMQ消息延迟配置
- Groovy Differences with Java(Groovy不同于java的地方)
- js监听浏览器后退事件
- 1
- POJ2010 贪心优先队列
- python 转换数字为中文的大写
- 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
- 初识Spring Batch
- mysql中case when then 语句
- 前端开发中遇到的兼容性问题
- 怎样通过迅捷PDF编辑器来修改PDF文件