popstate事件在低版本webkit中的调用
popstate是H5的history系列中的事件,但是在低版本的webkit中会自动触发。H5中的history api是不会使页面发生跳转的,只是操作地址栏和响应的state属性而已,而且是手动操作的。浏览器默认的history还是传统的那一套,虽然他们在浏览器上都是使用同一个“历史记录堆栈”,对这个差异的认知就是造成低版本webkit首次加载触发的原因。webkit并没有把H5的history和传统区分开,而根据官方文档对popstate的描述,只要访问历史记录就会触发popstate。而传统的history中访问页面和生产历史记录是同时的,所以在webkit中无论是刷新还是访问一个新页面都会触发popstate,而其他浏览器中这个popstate仅作用于H5的history,并不影响传统的history。
解决方案:
1、对popstate进行延迟绑定,因为popstate会在页面加载完成之后不久触发,所以在setTimeout一段时间之后再绑定事件。
2、判断浏览器再做调整,直接针对webkit在页面加载完成后第一次触发的popstate里屏蔽了。
例如:
修改前:
window.addEventListener('popstate', function() {
// todo
},false);
修改后:
window.addEventListener('load', function(){
setTimeout(function(){
window.addEventListener('popstate', function() {
// todo
},false);
})
})
popstate事件在低版本webkit中的调用的更多相关文章
- Android 低版本sdk中没有getSupportedPreviewSizes和getSupportedPictureSizes函数怎么办?
在做camera和SurfaceView做摄像头程序时,需要获取camera支持的相片大小,在低版本sdk中没有getSupportedPictureSizes函数,怎么办呢,请参阅下面的关键代码: ...
- matchesSelector及低版本IE中对该方法的实现
matchesSelector用来匹配dom元素是否匹配某css selector.它为一些高级方法的实现提供了基础支持,比如事件代理,parent, closest等. W3C在2006年就提出了该 ...
- js动态加载activeX控件在IE11与低版本IE中的差异
由于IE11更加遵循W3C规范,所以IE11与低版本IE在加载activeX时有差别. 1.IE11中动态加载activeX的顺序 var objectTag = document.createEle ...
- 高版本 MySQL 导出的脚本到低版本 MySQL 中执行时报错
导入 MySQL 脚本时报错:[ERR] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'低版本还不支持 utfmb4 这个字符集 解决方法:将 sql 脚 ...
- 解决backgroud:transparent在低版本浏览器中的bug
今天在html页面上定义了一个button和一个div,大小相同,button使用绝对定位,覆盖在div上面一层,同时样式设置背景透明(background:transparent). 这样就可以在看 ...
- webkit中DOM 事件有多少
webkit中DOM 事件有多少 目前客户端javascript中大量的工作就是处理浏览器,用户触发的各种事件,下面是webkit中这些事件的集合,有一些时常见的,标准规定的,而另一些则是webkit ...
- SQL Server 临时禁用和启用所有外键约束(高版本向低版本迁移数据)
--获得禁用所有外键约束的语句 select 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name +';' as 禁用约束 from ...
- Highcharts 在低版本 IE 上使用注意事项及个人总结
很多人经常遇到图表在主流浏览器上运行正常,在低版本IE(包括IE6.IE7.IE8等)下运行出错(图表显示不出来或显示不正常)的情况,这不是兼容性问题,而是 IE 浏览器自身的一些限制,我们只需要注意 ...
- Highcharts 在低版本 IE 上使用注意事项
来源:https://segmentfault.com/a/1190000004272693 很多人经常遇到图表在主流浏览器上运行正常,在低版本IE(包括IE6.IE7.IE8等)下运行出错(图表显示 ...
随机推荐
- 记字符串转bigDecimal的一个坑
项目中一个地方用到了bigdecimal,之前是字符串转Double,处理之后再转成String,看着麻烦,给改成用bigdecimal计算字符串,但是偶尔会出现如下异常. 很是诧异,加了非空校验,怎 ...
- IIS的地址指向
地址指向 1)AuthwebAPI 修改web.xml文件 <connectionStrings> data source 改成当前虚拟环境的IP指向 </connectionSt ...
- Java第一次实训课的作业
1.圆的面积 2.加密数字 3.奇偶数
- Gradle目录结构详解
环境:window 7 64 Gradle 版本: gradle 3.0 创建文件夹,并初始化 mkdir gradle_dir && cd gradle_dir gradle ini ...
- NBC朴素贝叶斯分类器 ————机器学习实战 python代码
这里的p(y=1|x)计算基于朴素贝叶斯模型(周志华老师机器学习书上说的p(xi|y=1)=|Dc,xi|/|Dc|) 也可以基于文本分类的事件模型 见http://blog.csdn.net/app ...
- CocosCreator 小知识
最近在自学creator,有些小坑和解决方案,想记录下来: 1. 防止点击穿透 场景:在游戏界面有功能按钮,上层弹出layer之后,加入了遮罩,但是游戏界面的功能按钮还可以点击,穿透了! 方案1:遮罩 ...
- _trigger
-- 触发器设置-- 使用说明:-- 1.脚本名为TriggerScript,使用时添加该生物即可-- 2.可以控制玩家进入附近时是上马.下马.或者提示信息.
- Java问题解决:使用maven install 和 package时出错
今天在idea中使用maven install 和 package时出现以下问题: [WARNING] The POM for org.apache.maven.plugins:maven-compi ...
- box-sizing的用法(笔记)
关于盒子布局的box-sizing的使用 border-box width 和 height 属性包括内容,内边距和边框,但不包括外边距.这是当文档处于 Quirks模式 时Internet Expl ...
- Cocos Creator学习一:学习目录以及v2.0 必须关注的网址
学习目录: <Cocos Creator学习二:查找节点和查找组件> <Cocos Creator学习三:生命周期回调函数> <Cocos Creator学习四:按钮响应 ...