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属性,没有才是标准 |
attrHref | IE67无法区分href属性与特性(bug) |
attrStyle | IE67是没有style特性(特性的值的类型为文本),只有el.style(CSSStyleDeclaration)(bug) |
attrProp | 对于一些特殊的特性,如class, for, char,IE67需要通过映射方式才能使用getAttribute才能取到值(bug) |
cssOpacity | 是否能正确返回opacity的样式值 |
traverseAll | IE678的getElementByTagName("*")无法遍历出Object元素下的param元素(bug) |
createAll | IE678不能通过innerHTML生成link,style,script节点(bug) |
cloneHTML5 | IE6789由于无法识别HTML5的新标签,因此复制这些新元素时也不正确(bug) |
cloneNode | 在标准浏览器下,cloneNode(true)是不复制事件的,以防止循环引用无法释放内存,而IE却没有考虑到这一点,把事件复制了(inconformity) |
cloneChecked | IE6789的checkbox、radio控件在cloneNode(true)后,新元素没有继承原来的checked属性(bug) |
fastFragment | fastFragment 是否支持createContextualFragment API,此方法发端于FF3,因此许多浏览器不支持或实现存在BUG,但它是将字符串转换为文档碎片的最高效手段 |
inlineBlock | 在IE678中,非替换元素在设置了大小与hasLayout的情况下,会将其父级元素撑大(inconformity) |
cssPercentedMargin | getComputedStyle API是否能支持将margin的百分比原始值自动转换为像素值 |
boxModel | 是否遵循w3c的盒子boxModel去计算元素的大小(IE存在怪异模式,inconformity) |
如果您觉得此文有帮助,可以打赏点钱给我支付宝1669866773@qq.com ,或扫描二维码


机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库