如何从Javascript检测Win8/Metro

如何从Javascript检测Win8/Metro,javascript,windows-8,microsoft-metro,Javascript,Windows 8,Microsoft Metro,如何从Javascript检测到环境是Windows 8 Metro应用程序 更新:为了澄清,我的Javascript代码可以在任何浏览器上运行,也可以作为Win8应用程序的一部分运行。由于Win8应用程序对JS代码施加了安全限制,我想检测代码何时在Win8应用程序中运行。我认为您可以使用: WorkerNavigator.useragent WorkerNavigator.useragent 属性来检测它回答我自己: 检测这种情况的一种方法是检查某些MS特定对象或名称空间是否存在。其中之一是窗

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

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

我认为您可以使用:

WorkerNavigator.useragent WorkerNavigator.useragent 属性来检测它

回答我自己:

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

if (typeof Windows != "undefined") {
  // Running in Win8 app
} else {
  // Running in a browser
}
我使用以下代码:

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

你到底有什么建议?该属性的存在是对Win8/Metro的一个良好测试,还是应该查看useragent的内容?听起来不可靠。嗯,属性测试是一个比用户代理比较好的方法,你也可以尝试检测WINT命名空间的存在(在JS中被投影为对象)-最明显的是根<代码> Windows < /Cord>命名空间。有人能看到什么<代码>({})totoSist.Cube(Windows)是?这可能是一种更稳健的检测方法。