.hasOwnProperty('getComputedStyle') 在 IE 11 中为假

.hasOwnProperty('getComputedStyle') false in IE 11

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

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

window.hasOwnProperty('getComputedStyle')

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

我有点困惑为什么会这样。我已经执行了其他方法来检查它的支持。然而,我很困惑为什么 IE 在支持它的同时报告错误。

不太确定这是否矫枉过正,但是 fiddle 只是记录响应,以便您自己查看。 https://jsfiddle.net/xrgrgrhe/

不要这样进行特征检测;浏览器对于某些属性和方法在原型链上的定义位置并不总是一致的。相反,只需访问 属性:

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

函数是真实的,而未定义的是虚假的。因此,如果该方法是在原型 anywhere 上定义的,而不是直接在 Window 实例对象上定义的,则此测试将通过。

对于它的价值,问题中的原始测试在 Microsoft Edge 中也是 returns true