javascript определяет касание рабочего стола и поддержку мыши

Как устройства с сенсорным экраном должны различать чистое касание и устройства с мышью? (как некоторые современные ноутбуки)

Необходимо отдать приоритет всем функциям мыши в приложении, а если устройство, на котором запущено приложение, поддерживает только сенсорный ввод, изменить функциональность.

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

нормальное обнаружение касания достигается так: 'ontouchend' in document;

Одним из способов определить, является ли компьютер настольным, может быть проверка разрешения экрана:

window.screen.width >= 1280 // desktop 

но это не так хорошо, потому что некоторые устройства могут иметь очень большое разрешение области просмотра, а некоторые ноутбуки могут иметь низкое разрешение...


person vsync    schedule 19.02.2014    source источник
comment
это сообщение связано: stackoverflow.com/q/7838680/104380   -  person vsync    schedule 20.02.2014
comment
дубликат stackoverflow.com/questions/21054126/   -  person drzaus    schedule 13.06.2014


Ответы (1)


После некоторых исследований я обнаружил, что лучшим решением было использовать этот код:

https://github.com/matthewhudson/device.js

Итак, как это работает, я задаю имена классов элементов тела, которые представляют устройство и ориентацию, и с этим я могу в значительной степени угадать, есть ли у пользователя мышь. (применяется класс desktop)

person vsync    schedule 07.04.2014
comment
как насчет рабочего стола с сенсорным экраном, мониторов для ноутбуков - person Muhammad Umer; 28.12.2014
comment
что насчет них? попробуй и увидишь - person vsync; 28.12.2014
comment
скажем, вы обнаруживаете мышь и улучшаете пользовательский интерфейс для мыши, но пользователь использует монитор для навигации и хочет, чтобы он работал как на планшете. - person Muhammad Umer; 28.12.2014
comment
вам нужно иметь 3 режима, один только для мыши, один только для касания и один для обоих, что создать сложнее всего. У вас есть более конкретный вопрос? - person vsync; 28.12.2014
comment
да, скажем, я хочу, чтобы меню вертикальной навигации перемещалось напротив мыши, как в Mac, чтобы помочь пользователю достичь своей цели. Но если пользователь использует сенсорный ввод, я просто хочу, чтобы он перетаскивал меню вверх и вниз. Теперь я увидел новую функцию, которую нельзя трогать, щелкать или перетаскивать. Это наведение. В некоторых телефонах Samsung. Это похоже на движение мыши... пока не обращаем на это внимания. - person Muhammad Umer; 28.12.2014
comment
Я не понимаю, к чему ваш вопрос? реализация вариантов использования не имеет отношения к этому вопросу. Речь идет только об обнаружении возможностей устройства. - person vsync; 28.12.2014