Ответ 1
Короткий ответ: Ваш тест снова будет работать в любой момент Chrome. Но, вероятно, не навсегда.
Длинный ответ:
Команда Chrome хотела добавить сенсорные события в настольные браузеры из-за растущего числа настольных компьютеров с сенсорными экранами. Так они и сделали - вероятно, около 24.0 Канарей. Затем они обнаружили, что множество людей делают то, что вы делаете, чтобы "обнаружить сенсорные устройства". Проблема с этим - , вы только проверяете, поддерживает ли браузер события касания, а не устройство (то же самое относится к Modernizr.touch
). Более конкретно, только API W3C/Apple TouchEvents.
Они не хотели отправлять разные версии Chrome для touch/non-touch, поэтому они сделали так, чтобы они включали только сенсорные API, если они обнаруживают сенсорное устройство при запуске (здесь обсуждается: http://code.google.com/p/chromium/issues/detail?id=152149).
Итак, теперь ваш тест снова будет работать... НО - если вы хотите, чтобы вы были уверены в будущем, вы можете изменить свой подход. Вот почему:
-
Не все браузеры будут выполнять этот переключатель, который делает Chrome.
-
Сенсорная способность становится динамичной: с помощью Microsoft Surface и т.д. вы можете отключить клавиатуру и мышь и перейти только touch-touch, у пользователей могут быть сенсорные мониторы, подключенные через KVM-переключатели, которые не будут обнаружены при запуске и т.д. Поставщики браузеров не хотят, чтобы API появлялись и исчезали - это был бы кошмар - поэтому в какой-то момент ребята из Chrome, вероятно, навсегда смогут использовать API TouchEvents на всех устройствах. Этот тест снова начнет металировать "ложные срабатывания".
Вместо этого просмотрите API-интерфейс PointerEvents, который дает общий интерфейс событий для ввода мыши, касания и стилуса. Если вы подумываете о создании кнопок больше для сенсорных интерфейсов и т.д., Там также есть указатель медиа-запроса (и hover один), который появится в браузерах в ближайшее время - это отличает различную точность входных устройств - none
/coarse
/fine
- и будучи динамическим, позволит вам настроить свои стили на основе подключенного указателя когда они подключены/отключены. Очень круто.
Modernizr v3.0 (в течение следующих нескольких недель) будет иметь несколько важных изменений здесь:
- Добавляется обнаружение API-интерфейса PointerEvents.
-
Modernizr.touch
переименовываетсяModernizr.touchevents
, чтобы лучше представлять, что это означает
Итак, я бы рассмотрел возможность использования PointerEvents, если он доступен (который уже есть в IE10), возвращаясь к переключателю Modernizr.touchevents
, если нет.