水平不到家,无法像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修改的更多相关文章

  1. css padding在ie7、ie6、firefox中的兼容问题

    padding 简写属性在一个声明中设置所有内边距属性. 说明这个简写属性设置元素所有内边距的宽度,或者设置各边上内边距的宽度.行内非替换元素上设置的内边距不会影响行高计算:因此,如果一个元素既有内边 ...

  2. css兼容问题(一)

    开头语:不用就忘,还是自己乖乖的记笔记吧! 正文开始:    (一)如果你的页面对IE7兼容没有问题,又不想大量修改现有代码,同时又能在IE8中正常使用,微软声称,开发商仅需要在目前兼容IE7的网站上 ...

  3. 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). 然而最新版 ...

  4. Qt 中的二进制兼容策略(简而言之就是地址不能变,剩下的就是让地址不变的技巧)

    本文翻译自 Policies/Binary Compatibility Issues With C++ 二进制兼容的定义 如果程序从一个以前版本的库动态链接到新版本的库之后,能够继续正常运行,而不需要 ...

  5. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  6. 项目编码规范(Ali)

    一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...

  7. 转:HAR(HTTP Archive)规范

    HAR(HTTP Archive),是一个用来储存HTTP请求/响应信息的通用文件格式,基于JSON.这个格式的出现可以使HTTP监测工具以一种通用的格式导出所收集的数据,这些数据可以被其他支持HAR ...

  8. ABAP面试问题及侧重点

    ABAP面试 1.简单的Report包括哪些东西 2.Dialog 逻辑流以及相应的处理内容 3.用过的几种增强方式:怎么找增强 4.接口和函数的使用,一般遇到自己不会的函数怎么处理 5.关联查询:I ...

  9. c4,configure the debug environment

    Yesterday I found a tiny C compiler (less than 600 line of C code, containing commits) called " ...

随机推荐

  1. 【Swift】iOS UICollectionView 计算 Cell 大小的陷阱

    前言 API 不熟悉导致的问题,想当然的去理解果然会出问题,这里记录一下 UICollectionView 使用问题. 声明  欢迎转载,但请保留文章原始出处:)  博客园:http://www.cn ...

  2. 在Java中使用xpath对xml解析

    xpath是一门在xml文档中查找信息的语言.xpath用于在XML文档中通过元素和属性进行导航.它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等.在学习本文档之前应该对XML的节点,元素 ...

  3. javascript继承笔记

    //原型(prototype):原型是一个对象,其他对象可以通过它实现属性继承 /*笔记: * 1.类式继承:通过原型链继承的方式 * 2.原型式继承:对类式继承的封装 * 3.寄生式继承:对原型继承 ...

  4. 介绍几种SSIS部署方式

    介绍 如果你已经开发完一个不错的SSIS包并且能够在你的本地完美的运行,每个任务都亮起绿色的通过标志.这时为了能够让这个包处理能够在指定时间运行,你需要将其发布到一个服务器上,并做好相关配置.作为开发 ...

  5. [数据科学] 从text, json文件中提取数据

    文本文件是基本的文件类型,不管是csv, xls, json, 还是xml等等都可以按照文本文件的形式读取. #-*- coding: utf-8 -*- fpath = "data/tex ...

  6. Tomcat 服务应用

    转自:http://wiki.jikexueyuan.com/project/tomcat/windows-service.html Tomcat8 是一个服务应用,能使 Tomcat 8 以 Win ...

  7. java 线程池——异步任务

    一.简单粗暴的线程 最原始的方式,当我们要并行的或者异步的执行一个任务的时候,我们会直接使用启动一个线程的方式,如下面所示: new Thread(new Runnable() { @Override ...

  8. 《InsideUE4》UObject(二)类型系统概述

    曾子曰:吾日三省吾身--为人谋而不忠乎?与朋友交而不信乎?传不习乎? 引言 上一篇我们谈到了在游戏引擎,或者在程序和高级编程语言中,设计一个统一对象模型得到的好处,和要付出的代价,以及在UE里是怎么对 ...

  9. Ubuntu管理开机启动服务项 -- 图形界面的Boot-up Manager

    有时学习时安装的服务太多,比如mysql.mongodb.redis.apache.nginx等等,它们都是默认开机启动的,如果不想让它们开机启动,用到时再自己手工启动怎么办呢? 使用sysv-rc- ...

  10. BZOJ 1984: 月下“毛景树” [树链剖分 边权]

    1984: 月下“毛景树” Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1728  Solved: 531[Submit][Status][Discu ...