在 WinStore (WinJS) 应用程序中检查 JavaScript 代码是否 运行
Check in JavaScript whether the code is running in a WinStore (WinJS) application
我正在开发一个 JS 库,它可以在 Windows Store (WinJS) 应用程序和 "regular" HTML/JS 应用程序中使用。我正在使用的依赖项之一(动态加载)有两个不同的 SDK,一个用于 WinJS 应用程序,一个用于 "regular" 网站,所以我需要知道我是否 运行在 WinJS 应用程序中加载正确的应用程序。
我可以尝试找出某些 Windows 特定的库是否存在(类似于下面的代码),但我想知道是否有 "cleaner" 方法来确定环境其中代码为运行。有没有这样的说法?
function isWinJS() {
return typeof Windows === 'object' &&
typeof Windows.UI === 'object' &&
typeof Windows.UI.Popups === 'object' &&
typeof Windows.UI.Popups.MessageDialog === 'function';
}
命名空间检测是 WinJS 确定它是 Windows 上的 运行 还是 Web 的方式。我建议看看它是如何系统地处理这些问题的。您可以使用 https://github.com/winjs/winjs(当前版本)上的代码执行此操作,或者查看仅在 Windows 上使用的 WinJS 1.0 或 2.0,因为那里的检测稍微简单一些。在这些版本中,需要进行检测,因为 WinJS 可以加载到 WinRT 不可用的应用程序中的 Web 视图或 Web 上下文中。我知道的一个例子是实现 WinJS sessionState 对象。
我正在开发一个 JS 库,它可以在 Windows Store (WinJS) 应用程序和 "regular" HTML/JS 应用程序中使用。我正在使用的依赖项之一(动态加载)有两个不同的 SDK,一个用于 WinJS 应用程序,一个用于 "regular" 网站,所以我需要知道我是否 运行在 WinJS 应用程序中加载正确的应用程序。
我可以尝试找出某些 Windows 特定的库是否存在(类似于下面的代码),但我想知道是否有 "cleaner" 方法来确定环境其中代码为运行。有没有这样的说法?
function isWinJS() {
return typeof Windows === 'object' &&
typeof Windows.UI === 'object' &&
typeof Windows.UI.Popups === 'object' &&
typeof Windows.UI.Popups.MessageDialog === 'function';
}
命名空间检测是 WinJS 确定它是 Windows 上的 运行 还是 Web 的方式。我建议看看它是如何系统地处理这些问题的。您可以使用 https://github.com/winjs/winjs(当前版本)上的代码执行此操作,或者查看仅在 Windows 上使用的 WinJS 1.0 或 2.0,因为那里的检测稍微简单一些。在这些版本中,需要进行检测,因为 WinJS 可以加载到 WinRT 不可用的应用程序中的 Web 视图或 Web 上下文中。我知道的一个例子是实现 WinJS sessionState 对象。