Обнаружение создания объекта для одной функции 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
}
Другие вопросы по тегам