Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在iOS中使用getComputedStyle访问样式_Javascript_Ios_Styles - Fatal编程技术网

Javascript 无法在iOS中使用getComputedStyle访问样式

Javascript 无法在iOS中使用getComputedStyle访问样式,javascript,ios,styles,Javascript,Ios,Styles,好的,我设计了这个函数,用于从指定元素返回所需的计算样式。它适用于我测试过的所有桌面浏览器,但在mobile safari中不起作用。如果我将getComputedStyle调用记录回控制台,这是一个非常好的[object CCStyleDeclaration],但是当我记录getPropertyValue调用时,它只返回“null”而不是正确的样式。任何帮助都会很棒。谢谢 Utils.getStyle = function(element, style){ var strValue =

好的,我设计了这个函数,用于从指定元素返回所需的计算样式。它适用于我测试过的所有桌面浏览器,但在mobile 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.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中测试这一点,但我想知道它是否有效。

您是否已转储/检查了
document.defaultView.getComputedStyle(element,“”)
?我已在桌面上进行了测试,但是否有办法在iOS控制台中获取整个转储?这件事让我发疯,就像网络调试黑暗时代一样是的,我知道你的意思!看一看:将数据转储到页面上可能是最简单的事情。有助于缩小其范围的是,它不是getComputedStyle()。当我在桌面浏览器中转储element.style时,它会列出该DOM元素上的所有各种样式(都是通过CSS和javascript指定的)。但是,当我在iOS中转储该样式对象时,它只列出通过javascript设置的样式。样式表中定义的样式未列出,因此它应该只设置/返回内联样式。iOS上的Safari会丢失
getComputedStyle
,这似乎很奇怪。仔细检查,这个窗口引用了
窗口。getComputedStyle(元素[,pseudoElt])
。在代码中使用
document.defaultView
,它是
窗口
,但可能在iOS
文档上。defaultView
空的
/
未定义的
。尝试只使用
窗口