Обнаружение «планшетного / сенсорного режима» в Edge с помощью JavaScript в Windows 10?

Этот вопрос задавали раньше, но ответы не совсем то, что мне нужно.

Мне нужно различать в Microsoft Edge, планшет это или нет (рабочий стол).

1) Следующий поток: Можно ли определить режим планшета в Edge и IE11 с помощью JavaScript в Windows 10?

действительно работало, но я боюсь, что в следующей версии Microsoft изменит поведение.

Как я могу быть уверен, что они этого не сделают?

Ответы с if condition of window.PointerEvent вообще не работают, так как это определено в Desktop.

Я не могу использовать мультимедийные функции взаимодействия с медиа-запросами CSS, как предлагается здесь: Есть ли способ определить, запустил ли пользователь браузер Microsoft Edge на планшете или компьютере ?


comment
Это действительно сработало, но я боюсь, что в следующей версии Microsoft изменит поведение. как я могу быть уверен, что они этого не сделают? Никогда нельзя быть уверенным. Но учитывая, что Windows 10 для ПК вышла всего несколько месяцев назад, я бы не стал об этом беспокоиться.   -  person BoltClock    schedule 27.10.2015
comment
Зачем нужно это различать?   -  person Patrick    schedule 28.10.2015
comment
Патрик - Например, на рабочем столе вы можете навести курсор мыши, а затем вы увидите всплывающую подсказку. В планшете поведение другое (без наведения), у меня есть много примеров различного поведения, но я думаю, что это не область действия.   -  person Programmer    schedule 28.10.2015
comment
На самом деле это не ответ, но вы можете начать с предположения, что у пользователя есть мышь, и, когда вы обнаружите событие указателя, затем переключите поведение в более удобный для сенсорного управления режим.   -  person libertyernie    schedule 13.11.2015
comment
Я не знаю о win10 и Edge, но по опыту невозможно отличить MS Surface с IE 11 от ноутбука с IE 11, оснащенным сенсорным экраном. Это было осознанное решение, которое Microsoft приняла при первой разработке. Не уверен, что они отошли от этого с помощью Edge и Win10   -  person apokryfos    schedule 09.09.2016


Ответы (1)


Вот аппаратные различия в возможностях браузера Edge:

Единственные различия связаны с определенными характеристиками устройства - например, поддержка кодеков на телефонах может отличаться из-за отсутствия аппаратного ускорения, а Flash не поддерживается в Windows 10 Mobile. Поскольку Windows 10 Mobile имеет другую фоновую модель, API-интерфейсы RTC (связь в реальном времени) также в настоящее время не поддерживаются. Наконец, Windows 10 Mobile не поддерживает Flash, чтобы обеспечить современную, сенсорную и энергоэффективную работу, подходящую для мобильного устройства. По этой причине Flash не поддерживается в Microsoft Edge in Continuum.

Чтобы определить возможности 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"); 
  }

Встраивание Flash-фильма, использующего вызов ExternalInterface, было бы самым простым способом обнаружения Flash.

Свойства объекта navigator должны позволять отличать планшет от телефона. Например:

navigator.cpuClass

должен возвращать x86 для устройств Surface, но 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>
    

to:

  • Microsoft Edge UA (континуум)

    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>
    

Ссылки

person Paul Sweatte    schedule 30.08.2016