【问题标题】:How to detect Win8/Metro from Javascript如何从 Javascript 中检测 Win8/Metro
【发布时间】:2011-12-11 09:04:45
【问题描述】:

如何从 Javascript 检测环境是 Windows 8 Metro 应用程序?

更新:澄清一下,我的 Javascript 代码既可以在任何浏览器上运行,也可以作为 Win8 应用程序的一部分运行。由于 Win8 应用程序对 JS 代码施加了安全限制,所以我想检测代码何时在 Win8 应用程序中运行。

【问题讨论】:

    标签: javascript windows-8 microsoft-metro


    【解决方案1】:

    回答我自己:

    检测这种情况的一种方法是检查某些特定于 MS 的对象或命名空间是否存在。其中之一是 Windows。例如:

    if (typeof Windows != "undefined") {
      // Running in Win8 app
    } else {
      // Running in a browser
    }
    

    【讨论】:

    • 您还可以尝试检测 WinRT 命名空间(在 JS 中被投影为对象)的存在 - 最明显的是根 Windows 命名空间。
    • 有人能看到({}).toString.call(Windows) 是什么吗?这可能是一个更强大的检测。
    【解决方案2】:

    我认为你可以使用:

    WorkerNavigator.useragent

    检测它的属性

    【讨论】:

    • 您的具体建议是什么?该属性的存在是对 Win8/Metro 的一个很好的测试,还是应该查看 useragent 的内容?听起来不可靠。
    • 嗯,是的,相对而言,属性测试比用户代理更好
    【解决方案3】:

    我使用这个代码:

    var isWinJS = !!window.Windows && /^ms-appx:/.test(location.href);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多