Надежно определить, использует ли пользователь мышь на веб-странице?

На нашей странице есть некоторые iframe в длинном горизонтальном прокрутке <div>. Если пользователь использует мышь, они могут прокручиваться с помощью полос прокрутки, и мы хотели бы, чтобы они могли выбирать текст внутри фреймов. Однако, если они используют только touch, полосы прокрутки - это хлопот, и я бы хотел наложить прозрачный элемент на все, чтобы дать им возможность легко прокручивать, перетаскивая его, что, конечно, жертвует функцией select-text, но имеет смысл в этот сценарий.

Что вызывает меня на мой вопрос, есть ли способ надежно определить, взаимодействует ли пользователь с веб-страницей с помощью мыши?

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

Кто-нибудь может подумать над тем, как это можно надежно проверить?

Ответ 1

Мышь может сделать одну вещь, которую сенсорное устройство никогда не сможет сделать - двигайтесь без нажатия кнопок. Поэтому я просто установил событие onMouseMove на загрузку страницы, и если он вызывает кнопки без, то отметьте пользователя как пользователя мыши. Затем вы можете сохранить это через файл cookie или LocalStorage, так как флаг не изменится в пределах одной среды и сразу удалит событие. Точный способ реализации события с одним огнем зависит от того, какую библиотеку вы используете (если вообще есть), но это должно быть легко с документами Mootools/JQuery в руке.

В общем, я бы рекомендовал более простой путь просто проверить сенсорный интерфейс в большинстве случаев:

if('ontouchstart'in window) 
{
    /* it a touch device */ 
}