2016-06-24 3 views
0

Короткий, но, по-видимому, сложный вопрос: Как отличить браузер Microsoft Edge от Desktop от Surface-Tablets в Javascript?Microsoft Edge: Distinguish Desktop vs. Surface/Touch

Край на Windows 10 имеет показывает пользовательский агент

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 

Насколько мое исследование оказалось, агентом пользователя на поверхности устройства

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 ", но я не могу полагаться на это, поскольку он показывает только текущую архитектуру процессора, правильно?

Моя забота: я работаю над веб-приложением, которое предлагает специальные записи меню для сенсорных устройств, поскольку они не распознают двойной щелчок или правую кнопку мыши. Таким образом, на iOS/Android я могу легко понять это, но для мобильных устройств Win10 и настольных компьютеров это сложно.

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

+0

Зачем вам нужно знать? Это поможет нам предоставить возможные решения. –

+0

Спасибо, вы спросили. Меня беспокоит: я работаю над веб-приложением, которое предлагает некоторые специальные пункты меню для сенсорных устройств, поскольку они не распознают двойной щелчок или правую кнопку мыши. Таким образом, на iOS/Android я могу легко понять это, но для мобильных устройств Win10 и настольных компьютеров это сложно. – Windwalker

ответ

1

Мобильные устройства содержит некоторые события, браузеры рабочего стола DonT

Вы можете использовать что-то вроде этой функции

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

Есть ноутбуки с сенсорным экраном, для которых такие допущения терпят неудачу :(Я узнал об этом на жестком диске – BBog

+0

Это совершенно верно, но на этих устройствах пользователь должен использовать мышь в качестве устройства ввода, так как мое приложение в первую очередь предназначено для настольных компьютеров клиентов. – Windwalker

+0

На самом деле я использую подход Modernizr для различения сенсорных браузеров ('return !! ('ontouchstart' в окне) || !! ('onmsgesturechange' в окне)'), но это не отличает рабочий стол IE11/Edge и поверхность/таблетка. – Windwalker

2

Я предполагаю, что у вас есть неправильно Агент пользователя строка для мобильных устройств:

Mozilla/5.0 (Windows Phone 10.0; Android;;) AppleWebKit/(KHTML, как и Gecko) Chrome/Mobile Safari/Edge /.

Доступно по цене MSDN.

+0

Ну, мой цитированный пользовательский агент Surface фактически получен из Trekstor Windows 10 Surftab, который принадлежит моему другу. – Windwalker