IE 11中的.hasOwnProperty('getComputedStyle')为false

时间:2016-01-18 15:09:24

标签: javascript internet-explorer-11 hasownproperty

所以我在颜色选择器模块上做了一些工作,增加了解析人类可读颜色的能力。我利用window.hasOwnProperty('getComputedStyle') 来执行转换。

我实现了对功能的检测(应该是IE 9+):

{{1}}

这是我注意到一些奇怪的行为。在Chrome和FF中,报告如预期的那样真实。但是在IE 11中(确实支持它)它报告错误。

我有点难过为什么会这样。我已经采取其他方式检查其支持。然而,我很难过,为什么IE报告错误,而它确实支持它。

不太确定这是否过度,但这个小提琴只是记录响应,所以你可以自己看。 https://jsfiddle.net/xrgrgrhe/

1 个答案:

答案 0 :(得分:3)

不要以这种方式执行特征检测;浏览器在原型链上定义某些属性和方法的位置始终不一致。相反,只需访问该属性:

if ( window.getComputedStyle ) {
    /* Proceed to use window.getComputedStyle */
}

函数是 truthy ,而undefined是 falsy 。因此,如果方法在原型上定义 where ,而不是直接在Window实例对象上定义,则此测试将通过。

对于它的价值,问题中的原始测试也会返回Microsoft Edge中的 true