Тестирование для пользовательского агента является сложным, грязным и неизменно терпит неудачу.Я также не обнаружил, что совпадение средств массовой информации для «портативного» работает на меня.Самым простым решением было определить, была ли мышь доступна.И это можно сделать так:
var result = window.matchMedia("(any-pointer:coarse)").matches;
Это скажет вам, нужно ли показывать элементы при наведении или нет, и все остальное, что требует физического указателя.Затем можно выполнить определение размера для дальнейших медиазапросов на основе ширины.
Следующая небольшая библиотека представляет собой версию запроса с поясными скобками, которая должна охватывать большинство сценариев «Вы планшет или телефон без мыши».
https://patrickhlauke.github.io/touch/touchscreen-detection/
Соответствия носителей поддерживаются с 2015 года, и вы можете проверить совместимость здесь: https://caniuse.com/#search=matchMedia
Короче говоря, вы должны поддерживать переменные, относящиеся к тому,экран сенсорный экран, а также, какой размер экрана.В теории у меня мог бы быть крошечный экран на рабочем столе, управляемом мышью.