zoukankan      html  css  js  c++  java
  • 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;
    }
    

    初次写博,不甚严谨。敬请见谅

  • 相关阅读:
    2016年蓝桥杯B组C/C++决赛题解
    2016年蓝桥杯B组C/C++决赛题目
    线段树区间更新 费马小定理|魔豆传奇
    2015年蓝桥杯B组C/C++决赛题解
    欧拉线性筛 与 欧拉函数 + 几道例题
    2015年蓝桥杯B组C/C++决赛题目
    2017年蓝桥杯B组C/C++决赛题解
    2017年蓝桥杯B组C/C++决赛题目
    2019 蓝桥杯国赛 B 组模拟赛 题解
    2018年蓝桥杯B组C/C++决赛题解
  • 原文地址:https://www.cnblogs.com/leo-lpf/p/6202156.html
Copyright © 2011-2022 走看看