mat*_*e64 21 javascript browser internet-explorer microsoft-metro windows-8
检测User-Agent作为Internet-explorer的Metro UI版本的最快方法是什么? >=10
Ber*_*amb 14
因此,似乎没有确定Metro IE与桌面IE的确定性测试,但似乎有一些不同的数据可以尝试用来假设它是Metro.不幸的是,我发现的所有项目都无法通过其他设置解释.换句话说,对于我发现的所有"功能"测试,可以通过某种方式配置Desktop IE,以使测试认为它在Metro上运行.
ActiveX是否已禁用(Metro不允许任何activex内容,但桌面IE也可以将其设置为禁用):
function isActivexEnabled() {
var supported = null;
try {
supported = !!new ActiveXObject("htmlfile");
} catch (e) {
supported = false;
}
return supported;
}
Run Code Online (Sandbox Code Playgroud)
用户代理字符串检查(Metro将始终以64位模式运行,但不会在32位机器上运行,并且Desktop IE可以配置为在64位模式下运行,并且不确定这些选项中的任何一个都会受欢迎)
function isWin64() {
return navigator.platform == "Win64";
}
Run Code Online (Sandbox Code Playgroud)
全屏检查(Metro将始终处于全屏模式,但Desktop IE也可以全屏模式运行,但这可以用作Metro模式的支持证据)
function isFullScreen() {
return (window.innerWidth == screen.width &&
window.innerHeight == screen.height);
}
Run Code Online (Sandbox Code Playgroud)
总之,我认为你必须尝试检查一堆功能,然后猜测,没有明确的方法.或者您可以接受MS不希望您这样做,并对要使用的功能使用功能检测.
对于那些想要尝试提供UI来引用包含浏览器UI的人(例如指示如何固定网页),请记住其他Metro应用程序可以嵌入IE10 Metro浏览器作为控件,所以即使你可以将浏览器识别为Metro vs desktop,UI可能不是您尝试引用它的位置,因此这可能最终成为一个非常棘手的情况,以便100%正确使用.所以,或者,不要尝试,或者你可以尝试其他检测技术,并接受有用例,你可能会显示错误的用户界面.
我不相信有一种方法可以确定请求是来自IE10的Metro版本还是常规桌面模式版本.Metro IE没有唯一的HTTP标头或用户代理字符串来识别它.
Windows 8 64位上的Internet Explorer 10用户代理字符串
Metro IE10是一个64位应用程序,因此您将在用户代理字符串中看到"Win64".默认情况下,常规桌面IE10是32位,将显示"WOW64".您可以基于此进行有根据的猜测,但是您会错误地识别选择在桌面模式下运行64位版本的IE10的任何人.从该图表中可以看出,用户代理字符串是相同的.[编辑:如评论中所述,这对32位PC无效.]
我可以看到为什么你可能想要检测Metro IE,但是这种类型的"浏览器嗅探"通常是不鼓励的,因为它太麻烦且容易出错.如果可以的话,最好使用Modernizr等功能测试您需要的某些浏览器功能.
| 归档时间: |
|
| 查看次数: |
17635 次 |
| 最近记录: |