Справочная ошибка: не удается найти переменную: IntersectionObserver

Я пытаюсь использовать IntersectionObserver в приложении cordova 8.0.0, которое работает на ios 13. Когда я проверяю свое приложение через safari, я вижу ошибку при инициализации:

ReferenceError: Can't find variable: IntersectionObserver

Это говорит о том, что IntersectionObserver недоступен, и я должен использовать полифилл. Но! Я читал много сообщений, в которых утверждалось, что IntersectionObserver изначально поддерживается в iOS Safari 12+. И я как бы предполагаю, что на кордове будет запущен изначально доступный WKWebView, поэтому он должен работать без полифиллов, верно?

Я обнаружил, что в моих экспериментальных функциях сафари включен IntersectionObserver, так что, может быть, есть параметр / флаг, который я мог бы использовать, чтобы принудительно включить эту функцию в моем приложении? Я бы очень хотел избежать использования полифиллов, если это возможно ..

Спасибо за любые предложения


person Janisko Psisko    schedule 27.11.2019    source источник


Ответы (2)


API IntersectionObserver поддерживается в сафари iOS с 12.2. Тем не менее, он поддерживался с помощью «экспериментальной функции» и был включен по умолчанию. Я предполагаю, что экспериментальные функции не включены в Cordova по умолчанию, пока я не нашел способ настроить их для включения.

Можно использовать полифилл: https://www.npmjs.com/package/intersection-observer. Я проверил себя, и производительность недостаточно высока, он использует setTimeout или MutationObserver для просмотра всего документа со всеми включенными параметрами.

person Chris Song    schedule 17.12.2019

Я только что добавил эту проверку

if ('IntersectionObserver' in window) {
  // IntersectionObserver initialization code
} else {
  // make lazy loading elements to be loaded right away
}

Наслаждаться

person obenda    schedule 03.02.2021