我正在开发一个可以在Windows应用商店(WinJS)应用程序和常规用户中使用的JS库。 HTML / JS应用程序。我使用的其中一个依赖项(动态加载它)有两个不同的SDK,一个用于WinJS应用程序,另一个用于"常规"网站,所以我需要知道我是否在WinJS应用程序中运行以加载正确的网站。
我可以尝试找出是否存在某些特定于Windows的库(类似下面的代码),但我想知道是否有更清洁的"找出代码运行环境的方法。有这种方法可以说出来吗?
function isWinJS() {
return typeof Windows === 'object' &&
typeof Windows.UI === 'object' &&
typeof Windows.UI.Popups === 'object' &&
typeof Windows.UI.Popups.MessageDialog === 'function';
}
答案 0 :(得分:2)
命名空间检测是WinJS如何确定它是在Windows还是Web上运行的。我建议看看它如何系统地处理这些问题。您可以使用https://github.com/winjs/winjs(当前版本)上的代码执行此操作,或者查看仅在Windows上使用的WinJS 1.0或2.0,因为检测更简单一些。在这些版本中,需要检测,因为WinJS可以加载到WinRT不可用的应用程序中的Webview或Web上下文中。我所知道的一个例子是实现WinJS sessionState对象。