Как уже указывали другие, окончательное определение наличия у них мыши ненадежно.Это может легко измениться, в зависимости от устройства.Это определенно то, что вы не можете надежно сделать с логическим значением true или false, по крайней мере, в масштабе документа.
События касания и мыши являются исключительными.Так что это может несколько помочь при совершении различных действий.Проблема заключается в том, что события касания находятся ближе к событиям мыши вверх / вниз / перемещения, а также вызывают событие щелчка.
От вашего вопроса вы говорите, что хотите предварительно навести курсор мыши.Кроме того, я не знаю никаких других особенностей вашего интерфейса.Я предполагаю , что при отсутствии мыши вы хотите, чтобы касание предварительно просматривалось, в то время как щелчок выполняет другое действие из-за всплывающего предварительного просмотра.
Если это так, вы можетенемного ленивый подход к обнаружению:
Событию onclick всегда будет предшествовать событие onmouseover с мышью.Поэтому обратите внимание, что мышь находится над элементом, по которому щелкнули.
Это можно сделать с помощью события onmousemove для всего документа.Вы можете использовать event.target
, чтобы записать, на каком элементе находится мышь.Затем внутри событий onclick вы можете проверить, действительно ли мышь находится над элементом, по которому щелкают (или потомком элемента).
Оттуда вы можете выбрать, полагаться ли на событие click дляи оба и A или B действие в зависимости от результата.Действие B может быть ничем, если некоторые сенсорные устройства не генерируют событие щелчка (вместо этого вам придется полагаться на события ontouch *).