Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
发布时间:2016-12-30 来源:查字典编辑
摘要:varpatterns={HYPHEN:/(-[a-z])/i,ROOT_TAG:/^body|html$/i};vartoCamel=fu...

varpatterns={

HYPHEN:/(-[a-z])/i,

ROOT_TAG:/^body|html$/i

};

vartoCamel=function(property){

//如果没有-[a-z]字母,则直接返回

if(!patterns.HYPHEN.test(property)){

returnproperty;

}

//如果有缓存,直接返回替换后的值

if(propertyCache[property]){

returnpropertyCache[property];

}

//使用正则替换

varconverted=property;

while(patterns.HYPHEN.exec(converted)){

converted=converted.replace(RegExp.$1,

RegExp.$1.substr(1).toUpperCase());

}

//存入缓存

propertyCache[property]=converted;

returnconverted;

};在YAHOO.util.Dom中,getStyle函数考虑了更多不同浏览器兼容性方面的问题,代码如下

//使用W3CDOM标准的浏览器,比如Firefox、Opera、Safari

if(document.defaultView&&document.defaultView.getComputedStyle){

getStyle=function(el,property){

varvalue=null;

//重命名部分CSS样式名

if(property=='float'){

property='cssFloat';

}

//获取通过CSS加上去的属性

varcomputed=document.defaultView.getComputedStyle(el,'');

if(computed){

value=computed[toCamel(property)];

}

returnel.style[property]||value;

};

//如果是IE浏览器

}elseif(document.documentElement.currentStyle&&isIE){

getStyle=function(el,property){

switch(toCamel(property)){

//“转换”名称为IE可以认识的

case'opacity':

varval=100;

try{

val=

el.filters['DXImageTransform.Microsoft.Alpha'].opacity;

}catch(e){

try{

val=el.filters('alpha').opacity;

}catch(e){

}

}

//百分比

returnval/100;

case'float':

property='styleFloat';

default:

varvalue=el.currentStyle?el.currentStyle[property]:null;

return(el.style[property]||value);

}

};

}else{

//获取内联样式

getStyle=function(el,property){returnel.style[property];};

}另外,PPK在他的Blog上的有关getStyle的阐述,也很精彩,有兴趣的可以去看下。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类