You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
;(function(){// getComputedStyle shouldn't freak out when called// without a valid element as argument// 重写getComputedStyle// 第一个参数如果不是元素节点则会抛出错误,被catch捕获,并被重写。// 重写后的方法,如果传入的第一个参数不是元素节点,被catch捕获,返回null,则不影响后续代码的运行try{getComputedStyle(undefined)}catch(e){varnativeGetComputedStyle=getComputedStylewindow.getComputedStyle=function(element,pseudoElement){try{returnnativeGetComputedStyle(element,pseudoElement)}catch(e){returnnull}}}})()
前言
getComputedStyle
element
element参数即是我们要获取样式的元素
pseudoElt
要匹配的伪元素字符串,对于普通元素来说需省略(null)
结果
特别重要的是该方法执行后返回的样式是一个实时的 CSSStyleDeclaration 对象,当元素的样式更改时,它会自动更新本身。
特别注意
源码分析
代码非常简单,浏览器在加载该模块的时候,如果调用getComputedStyle第一个参数不为元素节点时抛出错误,则被catch捕获,并重写该方法。重写的方法中是另一个try catch,如果后续再发生错误,将返回null,不阻碍后续js代码的执行。
结尾
文章记录
ie模块
data模块
form模块
zepto模块
event模块
ajax模块
The text was updated successfully, but these errors were encountered: