2

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

我通过以下方式实现了功能检测(应该是 IE 9+):

window.hasOwnProperty('getComputedStyle')

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

我对为什么会发生这种情况感到有些困惑。我已经执行了其他方法来检查它的支持。然而,我很难理解为什么 IE 报告错误,而它确实支持它。

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

4

1 回答 1

3

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

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

函数是真的,而 undefined 是的。因此,如果该方法是在原型上的任何位置定义的,而不是直接在 Window 实例对象上定义,则此测试将通过。

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

于 2016-01-18T18:54:28.393 回答