Почему обработчик события click не срабатывает на устройствах с операционной системой iOS?

Как изменить данный скрипт, чтобы при клике на элементы с классом "technologies__card" добавлялся класс "hoverCard", чтобы он корректно работал на устройствах iOS? Перепробовал различные варианты типа touchstart и touchend, но ничего не сработало. Также проверил готовность документа с помощью "document.readyState !== 'loading'". Код должен отрабатывать как на устройствах iOS, так и на других устройствах.
  • 3 июля 2024 г. 13:02
Ответы на вопрос 2
Событие click не срабатывает на устройствах iOS из-за того, что iOS обрабатывает события касания (touch events) по-разному. Вместо события click для iOS лучше использовать touchstart или touchend.

Чтобы изменить ваш скрипт, чтобы он корректно работал на устройствах iOS, вы можете добавить обработчики событий touchstart и touchend вместо click. Например:

```javascript
document.addEventListener("DOMContentLoaded", function() {
  var cards = document.querySelectorAll(".technologies__card");

  cards.forEach(function(card) {
    card.addEventListener("touchstart", function() {
      this.classList.add("hoverCard");
    });

    card.addEventListener("touchend", function() {
      this.classList.remove("hoverCard");
    });
  });
});
```

Этот код вызовет добавление класса "hoverCard" при касании элемента с классом "technologies__card" на устройствах iOS, а затем удаление этого класса при отпускании пальца.
Емнип window это объект браузера, со своими свойствами, в которые вроде даже DOMContentLoaded не входит, это евент документа. Скорее странно что это работает на не айос... 
-window.addEventListener('DOMContentLoaded', () => {
+document.addEventListener('DOMContentLoaded', () => {
Похожие вопросы