Обнаружение создания объекта для одной функции JavaScript (intersectionObserver)
Есть ли способ хранения встроенного метода javascript в переменной, чтобы задать другое поведение, когда этот метод недоступен в определенных браузерах?
Мой конкретный случай касается intersectionObserver, который недоступен в Safari или более старых браузерах MS. У меня есть некоторые анимации, вызванные этим, и я хотел бы отключить их, если intersectionObserver не доступен.
что я хочу сделать по сути это:
var iO = intersectionObserver;
if ( !iO ) {
// set other defaults
}
Я действительно не хочу загружать полифилл или библиотеку только для одной функции?
Большое спасибо
Эмили
1 ответ
Оператор in широко используется для обнаружения функций, поддерживаемых браузером. Функции JavaScript доступны во всем мире как свойство window
объект. Таким образом, мы можем проверить, если window
элемент имеет свойство.
if("IntersectionObserver" in window){
/* work with IntersectionObserver */
}
if("FileReader" in window){
/* work with FileReader */
}
in
оператор возвращаетtrue
если указанное свойство находится в указанном объекте или его цепочке прототипов.
Синтаксис: опора в объекте
[источник: developer.mozilla.org]
Таким образом, вы также можете сохранить результат в boolean
переменная и использовать его позже в вашем коде.
var iO = "IntersectionObserver" in window; /* true if supported */
if ( !iO ) {
// set other defaults
}