检测IE的Metro UI版本

21

1
我认为他在问如何检测你的页面是作为一个Metro应用程序还是在IE 10中服务,因为它们都提供JavaScript / HTML / CSS。 - Brandon Boone
3
实际上,我认为msec在问如何检测运行于“Metro模式”下的IE10与运行于“桌面模式”下的IE10的网页请求(它们不同)。我的回答如下。 - Kurt Schindler
如前所述,我认为您无法特定地确定Metro UI。但是,您可以使用一个小函数在此处轻松解析IE版本。下一步真正需要决定的是要检测哪些“功能”。请查看Modernizr,它非常好用、干净且轻巧。我发现它在现代UI开发中非常有用。 - HankChizlJaw
我个人会选择触摸屏。请查看此处以获取有关触摸检测的信息:http://hankchizljaw.co.uk/tutorials/make-your-mouse-events-touch-friendly-with-jquery-tutorial/28/04/2012/。 - HankChizlJaw
看一下我的答案。它实际上是可靠的 - 如果你认为它比当前选中的项目更好,请打勾;) - robocat
显示剩余7条评论
11个回答

-2
我花了一些时间研究出了一种方法。我思考了一下IE10 Metro缺少什么,只有一件事是记录在案的且不支持Metro UI。“开发者工具”。这些工具在窗口对象中有一个名为“__IE_DEVTOOLBAR_CONSOLE_COMMAND_LINE”的对象。如果您执行以下操作:
if (window.__IE_DEVTOOLBAR_CONSOLE_COMMAND_LINE)
{
    // In IE 10 Standard UI
}
else
{
    // In IE 10 Metro UI
}

我在几个不同的环境中进行了测试,它似乎在大多数地方都可以工作。 我能想到的唯一问题是如果开发者工具在用户的浏览器上被禁用了。


1
你不应该检测 window.__IE_DEVTOOLBAR_CONSOLE_COMMAND_LINE。这只有在打开 F12(开发者工具栏)时才会添加,所以实际上它只是测试是否已经打开了 F12。你还将依赖于 F12 的一个实现细节,而这个细节可能会随着它不是标准 API 而发生变化。 - Andy
FYI:在IE11中,window.__IE_DEVTOOLBAR_CONSOLE_COMMAND_LINE似乎不再存在。相反,有window.__BROWSERTOOLS_CONSOLEwindow.__BROWSERTOOLS_CONSOLE_BREAKMODE_INVOKERwindow.__BROWSERTOOLS_DOMEXPLORER_ADDED - robocat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接