• ie烦人的bug篇


    好多公司都不支持ie6了,基本都是ie8+,就连jq新版本也宣布放弃低版本ie,就不用说那些框架了,不过想用兼容ie的angularjs可以用我司徒大神写的avalon,个人感觉avalon也是比较好的,而且轻量,崇拜++。想用es6的同学可以github

    es5-shim,react是不兼容ie8的,反正这些东西在ie低版本有n多bug,不是一个es5-shim能完全cover的。

    unshift ie6.7下不返回长度
    splice一个参数的情况下,ie6、7、8默认为0,其他浏览器默认为数组length

    //判断window
    function isWindow(){
    window==document//IE678 true
    document==window//IE678 false
    }

    旧版本ie下dom bom对象的constructor属性没有暴露出来

    ie678
    getAttribute不能返回用户预设,返回一个CSSStyleDeclaration
    getAttribute href 会自动补充为完整路径
    不支持opacity,要使用滤镜
    在用innerHTML创建table元素,会被自动添加tbody,其他只返回<table></table>
    用innerHTML转换字符串为元素节点,ie支持不完好,包括script,link,style,meta在内的no-scope元素都转换失败,需要在它前面添加一些字符,H5标签支持同不好。
    判断select元素的disabled属性是否影响到子元素disabled取值。在Safari中,一旦select元素被disabled,他的孩子也被disabled
    如果一个checkbox被设置checked=true,多次克隆后,只有Safari4中返回false
    判断克隆元素时是否克隆attachEvent绑定的事件,只有旧版本IE及其兼容模式返回false
    判断浏览器是否支持encoding属性,ie67要用encoding代替
    判断能否删除元素节点自定义属性,旧版本IE不支持,直接置为undefined
    判断getComputedStyle能否正确取得元素marginRight,Safari早期版本总是取回一个很大的数
    当复制品指定了background-*样式的元素,对复制品的背景清空也会清空原来的

    var div=document.createElement("div")
    div.innerHTML=" <b>1</b><b>2</b>"
    document.body.appendChild(div);
    console.log(div.childNodes.length);//ie6-8弹出3,其他4
    console.log(div.fristChild.nodeType)//ie6弹出1,其他3

    ie6-8存在超空间的概念,当dom节点移出但是又有js相关联的时候,dom就会被存放在超空间。可以用parentNode判断

    onXXX在ie下没有参数,其他第一个参数为event

     上面这些bug,还有许多更奇葩的bug,让人对ie深恶痛绝。如果有更多bug欢迎提出,如果有更多的知识点,以后会慢慢更新。

  • 相关阅读:
    Docker核心技术之镜像(8)
    简单的自定义函数(7)
    存储过程游标的使用(6)
    存储过程循环语句(5)
    存储过程条件语句(4)
    存储过程的参数(3)
    存储过程的变量(2)
    一个简单的存储过程(1)
    Docker加速器配置(7)
    单表、多表查询
  • 原文地址:https://www.cnblogs.com/dh-dh/p/5083756.html
Copyright © 2020-2023  润新知