• mass Framework support模块 v2


    这是统一进行各种特征检测的模块。这些检测的值,如果存在对应DOM API并且其行为与大多数标准浏览器的行为一致为true,否则为false。false值越多说明该浏览器越落后,在我的测试列表中,FF9是做得最好的,全部为true,最差的不用说是哪个吧。就算是IE9也不尽人意,我还是需要为它做N多兼容代码。webkit系的也没有想象中的好。标准化之路任重道远啊。

    本版本的改进:

    • 发现boxModel,inlineBlock,keepSize,cssPercentedMargin这些特征必须等到domReady后才能检测,因此做了迟时处理。
    • 一些特征进行了改名,cloneAll更名为cloneNode,attrSelected更名为optSelected,inlineBlockNeedsLayout 更名为inlineBlock, shrinkWrapBlocks更名为keepSize。
    • 去掉reliableHiddenOffsets,增加cssPercentedMargin,cloneHTML5,cloneChecked。

    下面是mass Framework需要嗅探的特征一览表:

    名称详明
    insertTbody标准浏览器只有在table与tr之间不存在tbody的情况下添加tbody,而IE678则笨多了,即在里面为空也乱加tbody
    checkOn在大多数游览器中checkbox的value默认为on,唯有chrome返回空字符串
    optSelected当为select元素添加一个新option元素时,此option会被选中,但IE与早期的safari却没有这样做,需要访问一下其父元素后才能让它处于选中状态(bug)
    optDisabled判定disabled的select元素内部的option元素是否也有diabled属性,没有才是标准
    attrHrefIE67无法区分href属性与特性(bug)
    attrStyleIE67是没有style特性(特性的值的类型为文本),只有el.style(CSSStyleDeclaration)(bug)
    attrProp对于一些特殊的特性,如class, for, char,IE67需要通过映射方式才能使用getAttribute才能取到值(bug)
    cssOpacity是否能正确返回opacity的样式值
    traverseAllIE678的getElementByTagName("*")无法遍历出Object元素下的param元素(bug)
    createAllIE678不能通过innerHTML生成link,style,script节点(bug)
    cloneHTML5 IE6789由于无法识别HTML5的新标签,因此复制这些新元素时也不正确(bug)
    cloneNode在标准浏览器下,cloneNode(true)是不复制事件的,以防止循环引用无法释放内存,而IE却没有考虑到这一点,把事件复制了(inconformity)
    cloneCheckedIE6789的checkbox、radio控件在cloneNode(true)后,新元素没有继承原来的checked属性(bug)
    fastFragmentfastFragment 是否支持createContextualFragment API,此方法发端于FF3,因此许多浏览器不支持或实现存在BUG,但它是将字符串转换为文档碎片的最高效手段
    inlineBlock在IE678中,非替换元素在设置了大小与hasLayout的情况下,会将其父级元素撑大(inconformity)
    cssPercentedMargingetComputedStyle API是否能支持将margin的百分比原始值自动转换为像素值
    boxModel是否遵循w3c的盒子boxModel去计算元素的大小(IE存在怪异模式,inconformity)

    源码地址

  • 相关阅读:
    ad_imh
    pc send instructor pc ad
    数据、模型、IT系统认知
    量化投资认知
    LinAlgError: Last 2 dimensions of the array must be square
    转:Hadoop大数据开发基础系列:七、Hive基础
    Run-Time Check Failure #2
    0x00007FFC8C5325E7 (ucrtbased.dll)处(位于 DataStructure.exe 中)引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。
    栈与后缀表达式C实现
    Jupyter使用
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/2332647.html
Copyright © 2020-2023  润新知