IE10+ 不再支持浏览器检测标签来识别浏览器。
为了检测 IE10,我使用 JavaScript 和能力测试技术来检测某些 ms
定义的前缀样式,例如 msTouchAction
和 msWrapFlow
。
我想对 IE11 做同样的事情,但我假设 IE11 也将支持所有 IE10 样式。谁能帮我确定我可以用来区分这两者的 IE11 唯一样式或功能?
额外信息
- 我不想使用用户代理类型检测,因为它参差不齐,并且可以更改,而且我认为我已经读过 IE11 故意试图隐藏它是 Internet Explorer 的事实。
- 对于 IE10 功能测试如何工作的示例,我使用这个 JsFiddle (不是我的)作为我测试的基础。
- 我也期待很多“这是一个坏主意……”的答案。我对此的一个需求是 IE10 声称它支持某些东西,但它的实现非常糟糕,我希望能够区分 IE10 和 IE11+,以便将来继续使用基于能力的检测方法。
- 该测试与 Modernizr 测试相结合,该测试只会使某些功能“回退”到不那么迷人的行为。我们不是在谈论关键功能。
我已经在使用 Modernizr,但在这里没有帮助。
原文由 dano 发布,翻译遵循 CC BY-SA 4.0 许可协议
所以我最终找到了自己解决这个问题的方法。
在搜索 Microsoft 文档 后,我设法找到了一个新的 IE11 风格
msTextCombineHorizontal
在我的测试中,我检查 IE10 样式,如果它们是正匹配,那么我检查仅 IE11 样式。如果我找到它,那么它就是 IE11+,如果我没有找到,那么它就是 IE10。
代码示例: 通过 CSS 能力测试(JSFiddle)检测 IE10 和 IE11
当我发现它们时,我会用更多样式更新代码示例。
注意:这几乎肯定会将 IE12 和 IE13 标识为“IE11”,因为这些样式可能会继续使用。随着新版本的推出,我将添加进一步的测试,并希望能够再次依赖 Modernizr。
我正在将此测试用于回退行为。后备行为只是不那么迷人的样式,它没有减少功能。