zoukankan      html  css  js  c++  java
  • IE兼容BUG汇总及解决方案(持续更新)

    本篇为总结开发过程当中遇到的各种IE兼容性的小问题,比较复杂的会单开一篇文章来讲解。

    另:我手头目前只有原生IE8,原生IE9,原生IE11,以及IE11模拟的IE5,7,8,9,10。因IE6太过古老而不再进行测试。

    无法使用jquery的outerHTML的方式创建含有href属性的a标签(IE5-8)

    问题复现:

    typeof $("<a href='xxx'>").get(0);//IE7-8:"undefined"
    typeof $("<a href='xxx'>").get(0);//标准浏览器:"object"

    影响浏览器:

    测试模拟IE5模拟IE7模拟IE8原生IE8模拟IE9原生IE9模拟IE10原生IE11
     !!$("<a href='xxx'>").get(0) N N N N Y Y Y Y
    !!$("<a>").attr("href","x").get(0) Y Y Y Y Y Y Y Y

    解决方案:

    typeof $("<a>").attr("href","xxx").get(0);//IE8 "object"

    使用Date对象来构造新Date对象导致毫秒值丢失(所有IE,火狐)

    详见——FireFox和IE下使用Date来构造新Date对象的BUG

    IE下console对象报错

    详见——让IE兼容console——“由于出现错误80020101而导致此项操作无法完成”的解决方案

    IE8下congsole.log的typeof为object

    详见——IE8下的typeof(console.log)为"object"的BUG

    IE8下Event.button的值与标准浏览器不一致

    IE8以下的所有鼠标事件(mousedown,mouseup,click等)的event.button的值与标准浏览器不符,测试只在IE8-中出现。

    问题复现:

    $("body").mousedown(function(e){
        console.log(e.button);//各浏览器不一致
    })

    影响浏览器:

    e.button值测试IE5IE7IE8IE9IE10IE11火狐谷歌
    鼠标左键 1 1 1 0 0 0 0 0
    鼠标中键 4 4 4 1 1 1 1 1
    鼠标右键 2 2 2 2 2 2 2 2

    解决方案:

    使用jquery的e.which属性(1:左键,2:中键,3:右键)可以实现夸浏览器的一致性

    同时在jquery1.9.1的源码中可以找到对此问题的兼容解决方案

    // Add which for click: 1 === left; 2 === middle; 3 === right
    // Note: button is not normalized, so don't use it
    if ( !event.which && button !== undefined ) {
        event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
    }

    IE8下超过31个link style标签后失效

    在IE8下最多仅允许31个link style标签,按照在HTML页面中出现先后顺序,从第32个style标签起,及以后的都无效。

    解决方案只能发布前做标签合并,再发布。

  • 相关阅读:
    POJ 1144 Network(割点)
    POJ 3177 Redundant Paths & POJ 3352 Road Construction(双连通分量)
    ASCII码
    数组
    Java语法基础
    eclipse汉化过程
    指针
    面向对象
    第一课JAVA开发环境配置
    初学编写JAVA程序
  • 原文地址:https://www.cnblogs.com/xxcanghai/p/4602129.html
Copyright © 2011-2022 走看看