参考错误:找不到变量:IntersectionObserver

时间:2019-11-27 16:22:41

标签: ios13 intersection-observer cordova-8.0.0

我正在尝试在ios 13上运行的cordova 8.0.0应用程序中使用IntersectionObserver。当我通过野生动物园检查我的应用程序时,看到初始化错误:

ReferenceError: Can't find variable: IntersectionObserver

这表明IntersectionObserver不可用,我应该使用polyfill。但!我读过许多帖子,声称iOS Safari 12+已自然支持IntersectionObserver。我有点假设,cordova将运行在天生可用的WKWebView上,因此它应该在没有polyfill的情况下也可以工作,对吗?

我发现我的野生动物园实验功能中启用了IntersectionObserver,所以也许还有一个选项/标志可以用来在我的应用中强制启用此功能?如果可能的话,我真的想避免使用polyfill。

感谢任何建议

2 个答案:

答案 0 :(得分:0)

从12.2开始,iOS Safari浏览器支持

IntersectionObserver API。但是它是通过“实验功能”支持的,并且默认情况下启用。我假设默认情况下在cordova中未启用实验性功能,但到目前为止,我还没有找到一种将其配置为启用的方法。

一个选项是使用polyfill:https://www.npmjs.com/package/intersection-observer。我对自己进行了测试,性能还不够好,它使用setTimeoutMutationObserver来观察启用了所有选项的整个文档。

答案 1 :(得分:0)

我刚刚添加了这个检查

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

享受