Skip to content

Latest commit

 

History

History
61 lines (44 loc) · 3.77 KB

读Zepto源码之IE模块.md

File metadata and controls

61 lines (44 loc) · 3.77 KB

读Zepto源码之IE模块

IE模块也是 Zepto 的必备模块之一,这个模块的代码量很少,主要改写getComputedStyle

读 Zepto 源码系列文章已经放到了github上,欢迎star: reading-zepto

源码版本

本文阅读的源码为 zepto1.2.0

GitBook

reading-zepto

改写getComputedStyle

;(function(){
  // getComputedStyle shouldn't freak out when called
  // without a valid element as argument
  try {
    getComputedStyle(undefined)
  } catch(e) {
    var nativeGetComputedStyle = getComputedStyle
    window.getComputedStyle = function(element, pseudoElement){
      try {
        return nativeGetComputedStyle(element, pseudoElement)
      } catch(e) {
        return null
      }
    }
  }
})()

getComputedStyle 的第一个参数不为 element 时,有些浏览器会报错,zepto 可能希望 getComputedStyle 在所有浏览器上的行为表现一致,不希望 getComputedStyle 因为参数错误而中断后续代码的执行,所以改写了 getComputedStyle 方法。

这是一个立即执行函数,在加载完毕后,立即检测 getComputedStyle 在浏览器中是否有参数容错的行为,将执行代码放到 try ... catch 中,如果报错,则改写 getComputedStyle 函数。

改写后的 getComputedStyle 函数体中,再有一个 try ... catch ,如果执行错误,则返回 null。这样,getComputedStyle 就不会因为参数错误而报错,中止后续代码的执行了。

系列文章

  1. 读Zepto源码之代码结构
  2. 读 Zepto 源码之内部方法
  3. 读Zepto源码之工具函数
  4. 读Zepto源码之神奇的$
  5. 读Zepto源码之集合操作
  6. 读Zepto源码之集合元素查找
  7. 读Zepto源码之操作DOM
  8. 读Zepto源码之样式操作
  9. 读Zepto源码之属性操作
  10. 读Zepto源码之Event模块

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:

作者:对角另一面