IScroll5兼容IE修改
水平不到家,无法像js大神那样讲得头头是道。仅做记录,以备后查。
iScroll5是不兼容IE低版本的。为兼容IE低版本(以IE8为例),需做以下工作:
1、事件绑定方式兼容
众所周知,独特的IE有它自己事件处理的方法attachEvent和detachEvent。IScroll5的事件处理统一使用的是utils中的addEvent和removeEvent。需要使这两个方法的方法实现兼容IE8。最终结果如下:
me.addEvent = function (el, type, fn, capture) {
if (el.addEventListener) {
el.addEventListener(type, fn, !!capture);
} else {
if (typeof fn === 'object' && fn.handleEvent) {
el.attachEvent('on' + type, function () {
fn.handleEvent.call(fn);
});
} else {
el.attachEvent('on' + type, fn);
}
}
};
me.removeEvent = function (el, type, fn, capture) {
if (el.removeEventListener) {
el.removeEventListener(type, fn, !!capture);
} else {
if (typeof fn === 'object' && fn.handleEvent) {
el.detachEvent('on' + type, function () {
fn.handleEvent.call(fn);
});
} else {
el.detachEvent('on' + type, fn);
}
}
};
为什么这么写,从http://www.veryhuo.com/a/view/50318.html这篇文章中得知IE9 是 IE 家族中第一个支持 addEventListener + handleEvent 的浏览器,IE9 之前的版本连 addEventListener 也没能支持。所以就不得不添加对fn类型和handleEvent方法的判断。
2、事件传参e的处理
IE事件捕捉接受的参数e为undefined,所以兼容写法需要在方法体插入首行:e = e || window.event;这样的兼容写法。
3、e.preventDefault()和e.stopPropagation()的兼容写法
e.preventDefault()的兼容写法:
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
stopPropagation()的兼容写法:
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
初次写博,不甚严谨。敬请见谅
IScroll5兼容IE修改的更多相关文章
- css padding在ie7、ie6、firefox中的兼容问题
padding 简写属性在一个声明中设置所有内边距属性. 说明这个简写属性设置元素所有内边距的宽度,或者设置各边上内边距的宽度.行内非替换元素上设置的内边距不会影响行高计算:因此,如果一个元素既有内边 ...
- css兼容问题(一)
开头语:不用就忘,还是自己乖乖的记笔记吧! 正文开始: (一)如果你的页面对IE7兼容没有问题,又不想大量修改现有代码,同时又能在IE8中正常使用,微软声称,开发商仅需要在目前兼容IE7的网站上 ...
- CUDA 9.1/9.2 与 Visual Studio 2017 (VS2017 15.6.4) 的不兼容问题
2018年7月9日更新: CUDA已推出9.2版本,最高支持MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6). 然而最新版 ...
- Qt 中的二进制兼容策略(简而言之就是地址不能变,剩下的就是让地址不变的技巧)
本文翻译自 Policies/Binary Compatibility Issues With C++ 二进制兼容的定义 如果程序从一个以前版本的库动态链接到新版本的库之后,能够继续正常运行,而不需要 ...
- mysql源码包手动安装、配置以及测试(亲测可行)
笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...
- 项目编码规范(Ali)
一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...
- 转:HAR(HTTP Archive)规范
HAR(HTTP Archive),是一个用来储存HTTP请求/响应信息的通用文件格式,基于JSON.这个格式的出现可以使HTTP监测工具以一种通用的格式导出所收集的数据,这些数据可以被其他支持HAR ...
- ABAP面试问题及侧重点
ABAP面试 1.简单的Report包括哪些东西 2.Dialog 逻辑流以及相应的处理内容 3.用过的几种增强方式:怎么找增强 4.接口和函数的使用,一般遇到自己不会的函数怎么处理 5.关联查询:I ...
- c4,configure the debug environment
Yesterday I found a tiny C compiler (less than 600 line of C code, containing commits) called " ...
随机推荐
- C#设计模式学习笔记-单例模式
最近在学设计模式,学到创建型模式的时候,碰到单例模式(或叫单件模式),现在整理一下笔记. 在<Design Patterns:Elements of Resuable Object-Orient ...
- 一道关于java序列化的问题,看大家知多少————
问题先放在这里,稍后我会做出解答 已知类有Test和Test2,问两次主程序的输出结果是多少(SerializeUtil只是序列化的工具类) 类Test public class Test imple ...
- win10关机指示灯亮解决办法
新上市的win10,大家都迫不及待的装上了,但是却遇到了很多问题. 对于win10关机指示灯亮的解决办法有下面几种. 指示灯 如果是只有电源的指示灯亮,拔掉电源即可. 如果是信号灯和其他的指示灯都亮原 ...
- jedisLock—redis分布式锁实现
一.使用分布式锁要满足的几个条件: 系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现) 共享资源(各个系统访问同一个资源,资源的载体 ...
- Windows批处理:自动开关程序
公司有台14年组装的PC,时常无故重启,所以编写了个然并卵的批处理来测试稳定性. 打开程序.bat @echo off title Start Software color 2F : "C: ...
- 《Note --- Unreal 4 --- behavior tree》
Web: https://docs.unrealengine.com/latest/INT/Engine/AI/BehaviorTrees/index.html Test project: D:\En ...
- Apache:如何访问共享目录
环境说明:Apache的版本是2.4.10,共享目录有两种情况,一种是windows server的目录共享,还有一种是linux的NAS.无论访问哪一种共享目录,都需要用户名和密码. 问题说明:如何 ...
- JavaScript自动生成博文目录导航
转载于:JavaScript自动生成博文目录导航 我们在写博客的时候,如果博文里面有目录,会给人结构清晰.一种一目了然的感觉,看目录就知道这篇博文要讲解的内容,并且点击目录标题就可以跳转到 具体的内容 ...
- [LeetCode] Arithmetic Slices 算数切片
A sequence of number is called arithmetic if it consists of at least three elements and if the diffe ...
- web兼容学习分析笔记-margin 和padding浏览器解析差异
二.margin 和padding浏览器解析差异 只有默认margin的元素 <body>margin:8px margin:15px 10px 15px 10px(IE7) <b ...