Javascript 从浏览器中检测Windows 10

Javascript 从浏览器中检测Windows 10,javascript,windows,browser,Javascript,Windows,Browser,我需要在客户端运行Windows10s时将浏览器重定向到特定页面(特别是“S”,仅仅Win10是不够的)。 用户代理似乎没有指定这一点 我找到了通过C++和WMI在客户端获取这些数据的解决方案,但是我需要在网页上运行类似JavaScript的脚本,并推断客户端是否为10 S.< 如有任何帮助,我们将不胜感激。在JavaScript中,您可以使用window Object的navigator API,它将返回一系列完整的详细信息,如“appCodeName/appVersion number(平台

我需要在客户端运行Windows10s时将浏览器重定向到特定页面(特别是“S”,仅仅Win10是不够的)。 用户代理似乎没有指定这一点

我找到了通过C++和WMI在客户端获取这些数据的解决方案,但是我需要在网页上运行类似JavaScript的脚本,并推断客户端是否为10 S.<
如有任何帮助,我们将不胜感激。

在JavaScript中,您可以使用window Object的navigator API,它将返回一系列完整的详细信息,如“appCodeName/appVersion number(平台;安全;OS或CPU;本地化;rv:修订版本号)product/productSub应用程序名称应用程序名称版本”

您可以检查platformDetail中是否存在特定版本的子字符串窗口


例如,
var platformDetail=window.navigator.userAgent

因此,我刚刚安装了一个新的Windows 10 S副本并运行了它的默认浏览器边缘(任何其他浏览器都可以通过Windows应用商店使用,因为这是在此版本的Windows 10上运行应用程序的唯一方法)。其中的
window.navigator.userAgent
与Windows10Pro非常相似,只是有一个小细节:在操作系统信息后面有一个叫做“ServiceUI11”的东西。我的猜测是,这将是您查找页面是否在特定版本的Windows上运行的方法:

function isWindows10S(){
  return window.navigator.userAgent.indexOf("ServiceUI") !== -1;
}
在Edge和Chrome的SPro上测试


在IE 11中尝试时,虽然我得到了不同的结果。字符串是“Mozilla/5.0(Windows NT 10.0;WOW64;Trident/7.0;.NET4.0C…”,SPro之间是相同的,所以这种方法似乎只适用于基于Gecko:)的现代浏览器。

为什么不问问你的用户:你在使用Win10s?我下意识的反应是:“你为什么需要知道这个?”。我的意思是-如果在Windows S上,您的技术运行是否会有所不同?因为就浏览器而言,你不应该在意。我在这里遗漏了什么?半幽默地说:如果你发现自己处于边缘,那就是Windows S!该站点启动应用程序的下载。应用程序不在App Store中,出于各种原因,我们不希望它出现在App Store中,因此对于10S用户,我们需要将他们重定向到一个信息页面,解释他们应该做什么。感谢您的回复!我希望能在周末有机会尝试一下;用户代理字符串没有“ServiceUI”。哪个浏览器?我只尝试了Edge和Chrome,它对Windows都有效。这个答案不再有效。“ServiceUI 11”现在显示在Windows 10 Pro上运行的Edge的userAgent字符串中。(在我的系统上观察到)该死:(当然,没有正式的解决办法,嗯?谢谢!我这个周末会看一看,但我相信用户代理没有区分windows 10和windows 10,所以你可以尝试node.js来运行window cmd。像这样:
systeminfo | findstr/B/C:“OS Name”
它返回运行应用程序的窗口版本。