将User-Agent检测为metrointernet-explorer UIt版本的最快方法是什么?

最佳答案

因此,似乎没有确定的测试可以识别Metro IE和Desktop 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;
}

用户代理字符串检查(Metro将始终在64位模式下运行,但不会在32位计算机上运行,​​并且Desktop IE可以配置为在64位模式下运行,并且不确定这些选项的流行程度)
function isWin64() {
    return navigator.platform == "Win64";
}

全屏检查(Metro将始终处于全屏模式,但是Desktop IE也可以全屏模式运行,但这可以用作Metro模式的支持证据)
function isFullScreen() {
   return (window.innerWidth == screen.width &&
           window.innerHeight == screen.height);
}

简而言之,我认为您必须尝试检查一系列功能,然后再猜测,没有确定的方法。或者,您可以接受MS不想执行此操作,然后对要使用的功能使用功能检测。

对于那些想要提供UI来引用包含的浏览器UI(例如,指示如何固定网页)的用户,请记住其他Metro应用程序可以将IE10 Metro浏览器嵌入为控件,因此即使您可以将浏览器识别为Metro vs Desktop,UI可能不是您要引用的地方,因此最终可能会非常棘手,无法100%正确地使用它。因此,要么不要尝试,要么您可以尝试其他检测技术,并接受某些用例可能会显示错误的UI。

关于javascript - 检测IE的Metro UI版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8751479/

10-13 03:11