Как определить, является ли устройство сенсорным

… в JavaScript?

И я имею в виду не только мобильные устройства, а любые устройства, например сенсорные, такие как планшеты, где наведение курсора не имеет смысла.

Или я вынужден использовать CSS?

Один из сложных моментов — это ноутбуки с сенсорными экранами. В таком случае основным способом взаимодействия всё равно остаётся мышь… даже если устройство технически оснащено сенсорным экраном. Это в последнее время доставило нам немало головной боли с реакциями :sweat_smile:

Но чтобы ответить на ваш конкретный вопрос: я считаю, что CSS-медиазапросы — это правильный путь. У нас есть hover, pointer, any-hover и any-pointer.

А затем вы можете запускать эти CSS-медиазапросы из JavaScript с помощью window.matchMedia следующим образом:

Да, верное замечание и отличная идея.

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

В моём случае варианты были бы следующими:

  • всегда включено
  • только на сенсорных устройствах (поскольку на планшетах и телефонах наведение курсора фактически недоступно)
  • только при наведении (обычный случай)

В данном случае избыточное определение сенсорных устройств не станет катастрофой :sweat_smile:

Я просто надеялся, что упустил какой-то прямой атрибут сайта, но я изучу ваше предложение. Похоже, всё же потребуется небольшая рефакторинг CSS с использованием concatClasses…

Сервис capabilities содержит некоторые свойства, которые могут помочь. Например:

Хотя стоит отметить: эта логика недавно доставила нам головную боль. Я предполагаю, что в ближайшем будущем мы заменим её стратегией на основе CSS-медиазапросов. (Когда это было написано, я не думаю, что эти медиазапросы были широко доступны).

О-о-о, это скрытный сервис… В Source такое нечасто встретишь! :male_detective: