zoukankan      html  css  js  c++  java
  • 浏览器兼容性小整理和一些js小问题(后面会继续更新)

    最近在啃jQuery的源码,估计会啃到很多浏览器兼容性的问题,所以整理一下

    1,IE下的内存泄露.

    在IE中不在DOM树中的独立节点有javascript变量引用它的时候不会被回收。

    解决:手动将该js变量置为null

    2,IE<9,Nodelist无法调用slice和push

    解决:手动模拟

    3,IE,直接使用elem.attrName的形式获得属性值会自动串改DOM元素的某些属性,比如a的href

    解决:使用elem.getAttribute(attrName)或elem.getAttributeNode(attrName).value
    4,IE<9,使用getAttribute获取input元素的value时返回null

    解决:通过elem.defaultValue来获取

    5,IE<9,不能直接使用getAttribute('className')来获取class

    解决:使用getAttribute('class')

    6,Opera < 10,当一个元素有多个class的时候,用getElementsByClassName来获取第二个类会出错。
    解决:不要使用这个API

    7,黑莓4.6的浏览器会返回那些不在DOM树中的节点。
    解决:用elem.parentNode来判断是否在DOM树中

    8,IE8中的QSA无法使用[selected]之类的属性选择符,无法使用:checked之类的伪元素,对name的大小写不敏感

    9,contains不应该包含自身

    10,检测字符串可以转换为数字,使用这个方法obj - parseFloat( obj ) >= 0

    11,delete DOM元素上的自定义属性时,IE<9会报错,具体规则如下

    var div = document.createElement( "div" );
    try {
        //IE7无论div是否有test都会抛出异常。
        //IE8在没test的情况下会抛出异常,有test的情况下不会。
        //IE9都不会。
        delete div.test;
        } catch( e ) {
        alert(1);
    }
    

    所以这里要做判断,IE下使用removeAttribute来删除

    12,JSON.stringify的tips

    //var see = {name:'see',id:{toJSON:function () {}}};JSON.stringify(see)
    //var see = {my:function () {}};JSON.stringify(see);
    //JSON.stringify(window);

    //stringify是无法转换带函数、带循环引用的对象的

    13,IE6-7用InnerHTML生成table会自动插入tbody

    14,IE678不能直接用InnerHTML生成link元素

    15,checkbox进行append后,它的checked状态不会保留。IE67

    16,radio在进行append后,它的checked状态如果出现在name属性之前则不会保留。webkit(实测只有safari会出现这样的状况)

    17,IE下textarea的defaultValue不一定被正确地克隆

    18,Webkit下fragment元素里的input元素的checked状态不会被正确克隆

    19,有的事件没有target,比如load ,IE67

    20,event.target不能为TEXT_NODE,chrome23+,safari老版本

    21,老版本的FF不会触发非左键click的冒泡

    22,IE678在detach事件时,还需要手动将onEventType如onclick置为null

  • 相关阅读:
    【2017-5-24】WebForm 条件查询
    【2017-5-24】WebForm 分页功能
    【2017-5-22】Application ViewState RepeaterCommand用法
    【2017-5-21】问题总结 Session,Cookie,登录状态保持
    【2017-5-20】传值基础 复合控件
    【2017-5-18】WebForm Repeater的使用 简单控件
    JavaScript Bind()趣味解答 包懂~~
    无题
    移动端横屏(beta)
    常用CSS居中
  • 原文地址:https://www.cnblogs.com/suprise/p/3628057.html
Copyright © 2011-2022 走看看