在Windows 10上使用JavaScript检测Edge中的“平板电脑/触摸模式”?

时间:2015-10-27 16:46:05

标签: windows-10 microsoft-edge feature-detection device-detection forward-compatibility

之前曾问过这个问题,但答案并不完全是我需要的。

我需要在Microsoft Edge中区分它是否是平板电脑(桌面)。

1)以下主题: Can you detect "Tablet Mode" in Edge and IE11 using JavaScript on Windows 10?

确实工作了,但我担心在下一版本中微软会改变这种行为。

我怎么能确定他们不会?

if condition of window.PointerEvent的答案根本不起作用,因为它是在桌面中定义的。

我不能使用CSS Media Queries交互媒体功能,如下所示: Is there any way to detect if user has launched microsoft edge tablet or desktop browser?

1 个答案:

答案 0 :(得分:0)

以下是Edge浏览器功能的硬件特定差异:

  

唯一的区别是由于某些特定于设备的质量 - 例如,由于缺少硬件加速,手机上的编解码器支持可能会有所不同,而且Windows 10 Mobile不支持Flash。由于Windows 10 Mobile具有不同的背景模型,因此目前也不支持RTC(实时通信)API。最后,Windows 10 Mobile不支持Flash,以便提供适合移动设备的现代化,以触摸为中心且节能的体验。因此,Continuum中的Microsoft Edge不支持Flash。

要检测RTC功能,请使用以下代码:

if (RTCRtpCapabilities)
  {
  initRTC();
  }
function initRTC()
  {
  var recvAudioCaps = RTCRtpReceiver.getCapabilities("audio"); 
  var recvVideoCaps = RTCRtpReceiver.getCapabilities("video"); 
  var sendAudioCaps = RTCRtpSender.getCapabilities("audio");
  var sendVideoCaps = RTCRtpSender.getCapabilities("video"); 
  }

嵌入使用ExternalInterface call的Flash电影是检测Flash的最简单方法。

navigator对象的属性应该能够区分平板电脑和手机。例如:

navigator.cpuClass

应该为Surface设备返回x86,而对于手机则返回other

此外,用户代理在将电话显示器投射到电视时也会​​更改。它来自:

  • Microsoft Edge UA(移动)

    Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; <Device>) AppleWebKit/<Rev (KHTML, like Gecko) Chrome/<Rev> Mobile Safari/<Rev> Edge/<Rev>
    

为:

  • Microsoft Edge UA(Continuum)

    Mozilla/5.0 (Windows NT 10.0; ARM) AppleWebKit/<Rev> (KHTML, like Gecko) Chrome/<Rev> Safari/<Rev> Edge/<Rev>
    

与桌面相比:

  • Microsoft Edge UA(桌面)

    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/<Rev> (KHTML, like Gecko) Chrome/<Rev> Safari/<Rev> Edge/<Rev>
    

<强>参考