Jan*_*sko 12 intersection-observer cordova-8.0.0 ios13
我正在尝试在 ios 13 上运行的 cordova 8.0.0 应用程序中使用 IntersectionObserver。当我通过 safari 检查我的应用程序时,我看到初始化错误:
ReferenceError: Can't find variable: IntersectionObserver
这表明 IntersectionObserver 不可用,我应该使用 polyfill。但!我读过很多文章声称 iOS safari 12+ 原生支持 IntersectionObserver。我有点假设,cordova 将运行本机可用的 WKWebView,所以它应该可以在没有 polyfill 的情况下工作,对吧?
我发现我在 safari 实验功能中启用了 IntersectionObserver,所以也许我也可以使用一个选项/标志来强制在我的应用程序中启用此功能?如果可能的话,我真的很想避免使用polyfill。
感谢任何建议
小智 8
我们遇到了这个问题,有一件重要的事情需要指出。虽然此问题已在较新的 Safari 浏览器中得到修复,但此问题在较旧的设备上仍然可能发生(尽管 Safari 已完全更新)。这是由于旧款 iPhone 上的 IntersectionObserver 功能似乎被停用为“实验功能”(我知道 iPhone 8 就是这种情况) - 可能是为了节省资源 - 请参阅https://youtu.be /qDSXYGybNVU?t=68。因此,为了确保您的应用程序正常工作,您可能需要使用 polyfill 作为替代/后备。
小智 5
iOS safari 自 12.2 起支持 IntersectionObserver API。然而它是通过“实验功能”支持的,并且默认启用。我假设默认情况下在 cordova 下未启用实验功能,到目前为止我还没有找到将其配置为启用的方法。
一种选择是使用polyfill: https: //www.npmjs.com/package/intersection-observer。我自己测试过,性能不够好,它使用 或setTimeout来MutationObserver观察启用所有选项的整个文档。
我刚刚添加了这个检查
if ('IntersectionObserver' in window) {
// IntersectionObserver initialization code
} else {
// make lazy loading elements to be loaded right away
}
Run Code Online (Sandbox Code Playgroud)
享受
| 归档时间: |
|
| 查看次数: |
11059 次 |
| 最近记录: |