zoukankan      html  css  js  c++  java
  • ie9以下的浏览器兼容性问题

    .bind不兼容的问题
    Function.prototype.bind = function () {
    var fn = this, args = Array.prototype.slice.call(arguments), object = args.shift();
    return function () {
    return fn.apply(object,
    args.concat(Array.prototype.slice.call(arguments)));
    };
    };


    .getElementsByClassName 不兼容的问题

    var getElementsByClassName = function (searchClass, node, tag) {
    var result = [];
    if (document.getElementsByClassName) {
    var nodes = (node || document).getElementsByClassName(searchClass);
    for (var i = 0; node = nodes[i++];) {
    if (tag !== "*" && node.tagName === tag.toUpperCase()) {
    result.push(node)
    }
    }
    return result
    } else {
    node = node || document;
    tag = tag || "*";
    var classes = searchClass.split(" "),
    elements = (tag === "*" && node.all) ? node.all : node.getElementsByTagName(tag),
    patterns = [],
    current,
    match;
    var i = classes.length;
    while (--i >= 0) {
    patterns.push(new RegExp("(^|\s)" + classes[i] + "(\s|$)"));
    }
    var j = elements.length;
    while (--j >= 0) {
    current = elements[j];
    match = false;
    for (var k = 0, kl = patterns.length; k < kl; k++) {
    match = patterns[k].test(current.className);
    if (!match) break;
    }
    if (match) result.push(current);
    }
    return result;
    }
    }

    addEventListener不兼容的问题

    function myAddEvent(obj, ev, fn) {
    if (obj.attachEvent) {
    obj.attachEvent("on" + ev, fn);
    }
    else {
    obj.addEventListener(ev, fn, false);
    }
    }

    .map不兼容的问题
    Array.prototype.myMap = function (fn, context) {
    context = context || window;
    var ary = [];
    if (Array.prototype.map) {
    ary = this.map(fn, context);
    } else {
    for (var i = 0; i < this.length; i++) {
    ary[i] = fn.apply(context, [this[i], i, this]);
    }
    }
    return ary;
    }

    e.stopPropagation的兼容性问题

    function stopPropagation(){
    e = window.event || e;
    if (document.all) { //只有ie识别
    e.cancelBubble = true;
    } else {
    e.stopPropagation();
    }
    }

    e.currentTarget的兼容性问题修复如下:
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
    var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
    if (isIE) {
    var reIE = new RegExp("MSIE (\d+\.\d+);");
    reIE.test(userAgent);
    var fIEVersion = parseFloat(RegExp["$1"]);
    if (fIEVersion == 7 || fIEVersion == 8) {
    e=e.srcElement.parentElement;
    }else{
    e=e.currentTarget;
    }
    }else{
    e=e.currentTarget;
    }
  • 相关阅读:
    Vue之axios基础使用
    Vue + Spring Boot 项目实战(二):使用 CLI 搭建 Vue.js 项目
    解决:'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    CentOS root用户修改只读文件时提示加! 解决办法
    CentOS 7 源码编译安装 Redis
    CentOS安装Jdk并配置环境变量
    Vue + Spring Boot 项目实战(一):项目简介
    druid 数据源 使用属性文件的一个坑
    scala 学习笔记(07) 一等公民的函数
    linux:手动校准系统时间和硬件CMOS时间
  • 原文地址:https://www.cnblogs.com/weihongli/p/6474538.html
Copyright © 2011-2022 走看看