Elena0394
@Elena0394

Плохое ли такое решение проверки поддержки браузера формата webp?

Я добавила в head такой скрипт
<script>
  fetch('/img/pixel-webp.webp')
    .then(res => {
      if (res.ok) {
        document.documentElement.classList.add('webp');
      } else {
        document.documentElement.classList.add('no-webp');
      }
    })
    .catch(err => {
      document.documentElement.classList.add('no-webp');
    });
</script>

он работает хорошо на ios тоже. Вот это костыль? Или норм решение? Может как-то лучше есть варианты?
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 3
IvanU7n
@IvanU7n
nothing interesting here
плохое: это всего лишь проверка того, что fetch работает и картинка есть на сервере

либо Content Negotiation на сервере при отдаче картинки, т.к. Safari только при запросе картинок, шлёт, что он поддерживает webp
либо загрузить через src в new Image() и у него ловить load или error

я бы пошёл по первому пути
Ответ написан
Комментировать
Recreator
@Recreator
А если так?
var webPsupport = (function() {
  var webP = new Image();
  webP.onload = WebP.onerror = function () {
    callback(webP.height == 2);
  };
  webP.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
});

document.write(webPsupport ? 'webP supported!' : 'webP not supported.');
Ответ написан
Комментировать
@SergeiB
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы