有什么方法可以检测用户是否启动了 Microsoft Edge 平板电脑或桌面浏览器?

Is there any way to detect if user has launched microsoft edge tablet or desktop browser?

Microsoft Edge 浏览器为 windows 10 平板电脑和台式机返回相同的用户代理。因此,请帮助我通过任何 javascript 功能或用户代理检测或任何其他方式区分 micosoft edge 平板电脑和桌面浏览器。

注意:通常我们通过指针事件来区分平板电脑和桌面浏览器。 平板电脑支持指针事件,而台式机不支持。 在 windows 10 中甚至桌面都支持指针事件

Touch 测试 user-agent 对你不起作用?

与 Windows8/8.1 不同,它只有一个 Microsoft Edge 浏览器,而不是“沉浸式”触摸友好浏览器和常规桌面 win32 应用程序。因此,您无法检测到 UA 字符串的差异,因为没有差异。

但是,如果您的用例是为触摸设备(平板电脑和变形本、二合一设备等)提供触摸友好的布局,并为仅使用鼠标和键盘的用户提供更紧凑的布局,您可以使用功能为此在 CSS 中进行检测。

为此,您可以使用 CSS 媒体查询交互媒体功能。

如果要检测有触摸屏:[=​​13=]

@media (pointer: coarse) { 
    ...styles for touch screen...
}

如果你想检测用户不能悬停(触摸屏上的常见问题):

@media (hover: none) {
   ... styles ...
}

然而,重要的是要指出这报告了主要的定点设备。在可以有 trackpad/mouse 和触摸屏的敞篷车等机器中,它可能会报告触摸屏的值。

详情见the spec

我发现您可以使用 JavaScript 来检测是否处于平板电脑模式(尽管如果 Edge 在用户代理中,代码可能只需要 运行,并且 Windows Phone 不在用户代理中?)- 参见

这在 Edge 中有效,但在 IE11 中无效。

reliably detect Metro/Modern 在 Windows 8/8.1 上使用了类似的技术。