JavaScript能否检测到UWP应用?

3
我正在使用NodeJS和EaselJS构建一个小游戏,可以在本地主机上以浏览器方式运行。我下载了Visual Studio并开始创建UWP应用程序,以便在Xbox One上播放。实际上,Visual Studio只是中间人,我使用“启动页”并将其指向本地托管的Web服务器来创建应用程序,而不是重新发明轮子。
当作为窗口/ Xbox应用程序运行时,我希望利用Windows.UI功能,特别是对于在电视上显示的过扫描能力。到目前为止,我无法让JS检测执行类型。我已经添加了
if (Windows)
{
    Windows.UI.ViewManagement.ApplicationView.getForCurrentView() ...
}

但是当我在普通的浏览器中运行它时,会出现“Windows未定义”的引用错误。我也尝试了其他方法。
if(typeof Windows !== 'undefined'){....

这使得浏览器版本可以正常运行,但是在Visual Studio中进行的部署测试也无法看到它(我放置了一个调试控制台输出来确保)。

是否可能实现两者兼顾的执行方式,还是我需要全力以赴,在VS中开发一个特定版本的游戏来达到我的目的?


如果 typeof Windows != 'undefined' 呢? - Shawn Kendrot
2个回答

1
我懂了。if(typeof)的解决方案部分正确,Shawn做得很好。我未能做到的是在Visual Studio中的appxmanifest中包含WinRT访问URI。一旦我告诉它实际上要在应用程序端查找Windows,我就可以获得我的调试输出并且屏幕会适当地缩放。无论如何感谢你的帮助!

0
我能想到两种可能的选择。首先检查对象的类型:
if(typeof Windows != 'undefined')
{
}

其次,在你的检查之前声明一个变量Windows。在JavaScript中重新声明一个变量是可以的,它不会覆盖原始值。

var Windows;
if(Windows)
{
}

正如我所提到的,我可以进行typeof检查,浏览器会继续执行,但是UWP部署也会跳过它,而不是执行语句内的代码。如果我提前声明var以满足浏览器版本,那么if语句内的UI声明仍然会抛出错误吗?因为即使Windows var存在,所有这些都将不存在。 - Christopher K
声明但未赋值的变量为 undefined,但对于 if 语句来说仍然可以正常工作。 - Shawn Kendrot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接