Задать вопрос
zkrvndm
@zkrvndm
Архитектор решений

Как с гарантией определить, что сайт открыт на смартфоне или планшете?

Существует ли относительно простой способ на JavaScript убедится, что сайт открыт на смартфоне или планшете?
  • Вопрос задан
  • 1249 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 4
Плохо формализовання задача.
Что для тебя - сайт открыт на смартфоне или планшете? Тач скрин в тесле это планшет или десктоп?
Сушествуют две разные задачи:
1) Адаптация сайта под малый размер экрана
2) Адаптация под тач интерфейс
Первое решается медиа запросами, адаптивной и резиновой версткой
Второе - детектом тач ивентов в яваскрипте.
А еще есть разная плотность пикселей, которая решается вьюпортом и медиа сетами
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Через touch-детект.

И можно добавить ещё проверку ориентации экрана: тут и navigator.userAgent.

Или так:
if(window.matchMedia("only screen and (max-width: 760px)").matches) {
//mobile device
} else {
//not mobile device
}

Или через проверку наличия гироскопа:
var gyroPresent = false;
window.addEventListener("devicemotion", function(event){
    if(event.rotationRate.alpha || event.rotationRate.beta || event.rotationRate.gamma)
        gyroPresent = true;
});
Ответ написан
Комментировать
@Redeve
Веб-макаке не хватит и 640гБ
три простых примера по юзер агенту, window.orientation и regex
Ответ написан
@d-sem
Простого гарантированного способа не существует.

useragent произволен и вполне может меняться посетителем.
window.orientation deprecated https://developer.mozilla.org/en-US/docs/Web/API/W...

Разные браузеры могут представлять расширенный api доступа к устройству по совокупности которых можно понять что это мобильное устройство. Но это разные браузеры и api может не поддерживаться на них.

Поэтому или довериться useragent'у (простой но не гарантированный способ) или копать в строну различных библиотек и сервисов (гарантированный но простой способ).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm Автор вопроса
Архитектор решений
Всем спасибо за ответы, я нашел устраивающий меня вариант, который дает 100% гарантию. Буду просто тупо вещать на body обработчик onmouseover и если обнаружена мышка над документом, считаем, что сайт с открыт с ПК и перестраиваем меню для комфортной работы именно с мышкой. Изначально же буду всегда принимать, что сайт открыт на смартфоне и меню держать в режиме работы с тачем, пока не обнаружена мышка.

P. S. Это не сработало, увы. На смартфонах клики распознаются в том числе и как события мыши, хотя мыши нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы