好的,所以我将此函数设计为从指定元素返回所需的计算样式。它可以在我测试过的所有台式机浏览器中使用,但是不能在移动Safari中使用。如果我将getComputedStyle调用记录回控制台,这是一个很棒的[object 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;
};

最佳答案

如果我对window.getComputedStyledocument.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中对此进行测试,但是我很想知道它是否有效。

关于javascript - 无法在iOS中使用getComputedStyle访问样式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12206924/

10-10 01:10