Я пытаюсь сделать свое приложение кросс-браузерным, предоставляя два стиля, один для браузеров, поддерживающих 3D-анимацию CSS, и другой для браузеров, которые этого не делают, используя этот код для определения функций:
// Function from: https://stackoverflow.com/a/36191841/7982963
const isValueSupported = (prop, value) => {
const el = document.createElement('div');
el.style[prop] = value;
return el.style[prop] === value;
}
// [unction from: http://lea.verou.me/2009/02/check-if-a-css-property-is-supported/
const isPropertySupported = property => property in document.body.style;
// Detection style inspired by Modernizr library
if (isValueSupported('perspective', '400px') && isValueSupported('transform-style', 'preserve-3d') && isValueSupported('backface-visibility', 'hidden') && isValueSupported('transform', 'rotateY(-180deg)') && isPropertySupported('perspective') && isPropertySupported('transform-style') && isPropertySupported('backface-visibility') && isPropertySupported('transform') && (!navigator.userAgent.includes('Firefox'))) {
document.documentElement.classList.add('csstransforms3d');
} else {
document.documentElement.classList.add('no-csstransforms3d');
}
Проблема в том, что, хотя некоторые браузеры, такие как Firefox, проходят тестирование, у них есть некоторые известные ошибки, такие как Ошибка обратной связи Mozilla , поэтому мне пришлось browser-sniff :. (
Я быстро нашел полезные результаты для Firefox: if (navigator.userAgent.includes('Firefox'))
, но для другого браузера оказалось, что у меня на компьютере под названием «Baidu browser» я не смог найти никаких результатов.
Так как же обнаружить такие браузеры?