Microsoft Edge:区分桌面与Surface / Touch

时间:2016-06-24 11:26:42

标签: javascript browser user-agent microsoft-edge

简短但显然棘手的问题: 如何区分桌面上的Microsoft Edge浏览器和Javascript中的Surface-Tablets?

Windows 10上的Edge显示了用户代理

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586

就我的研究结果而言,Surface设备上的用户代理是

Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586

所以唯一的区别似乎是" Win64; x64",但我不能依赖它,因为它只显示当前的CPU架构,对吧?

我担心的是:我正在开发一个网络应用程序,它为触摸设备提供了一些特殊的菜单条目,因为它们不会识别双击或鼠标右键。所以在iOS / Android上,我可以很容易地解决这个问题,但对于Win10移动版和桌面版,很难实现。

关于如何将这些与环境区分开来,您还有其他提示吗?

2 个答案:

答案 0 :(得分:2)

我猜您的移动设备 用户代理 字符串错误:

  

Mozilla / 5.0(Windows Phone 10.0; Android ;;)AppleWebKit /(KHTML,如Gecko)Chrome / Mobile Safari / Edge /。

可在MSDN处找到。

答案 1 :(得分:1)

移动设备包含桌面浏览器

中的某些事件

你可以使用类似这个功能的东西

function isTouch() {  
  var touch = false;
  try {  
    document.createEvent("TouchEvent");  
    touch = true;
  } catch (e) {}  
  return touch;
}