好的,所以我将此函数设计为从指定元素返回所需的计算样式。它适用于我测试的所有桌面浏览器,但是,它不适用于移动Safari。如果我将getComputedStyle调用记录回控制台它是一个[对象CCStyleDeclaration]这很好,但是当我记录getPropertyValue调用时,它只返回" null"而不是正确的风格。任何帮助都会很棒。谢谢!
Utils.getStyle = function(element, style){
var strValue = "";
if(document.defaultView && document.defaultView.getComputedStyle){
strValue = document.defaultView.getComputedStyle(element, "").getPropertyValue(style);
}else if(element.currentStyle){
style = style.replace(/\-(\w)/g, function (strMatch, p1){
return p1.toUpperCase();
});
strValue = element.currentStyle[style];
};
return strValue;
};
答案 0 :(得分:1)
如果我对window.getComputedStyle
vs document.defaultView.getComputedStyle
的评论有任何实质内容,我会在自己的资料库中使用此功能:
getComputedStyle : function(element){
var styles = element.currentStyle || getComputedStyle(element, null);
return styles;
}
适应您的功能签名:
Utils.getStyle = function(element, style){
var styles = element.currentStyle || getComputedStyle(element, null);
// Prevent a 'Cannot read property X of null' error
if(styles != null){
return styles[style];
} else {
return null;
}
}
我不能在iOS中测试这个,但我很想知道它是否有效。