【问题标题】:iOS: WKWebView does not load local JS files immediatelyiOS:WKWebView 不会立即加载本地 JS 文件
【发布时间】:2020-10-29 00:50:22
【问题描述】:

我通过loadHTMLstring 方法将两个JS 文件加载到WKWebView 中。这些脚本嵌入在应用程序中,因此不会执行 HTTP 调用。第一个脚本加载到head 标记中。第二个是内联。这是给 Lottie 网络播放器的:https://github.com/LottieFiles/lottie-player。因此,第一个加载 lottie-player.js 而第二个加载 lottie-player 元素之后的动画。

第二个脚本的作用类似于:

const player = document.querySelector("lottie-player");

// or load via a Bodymovin JSON string/object
player.load(
  '{"v":"5.3.4","fr":30,"ip":0,"op":38,"w":315,"h":600,"nm":"new", ... }'
);

一切正常(即动画加载和播放)。我面临的问题是大约需要 1 秒才能看到动画,因此 WKWebView 似乎不会立即加载脚本。有没有办法解决这个问题?我正在使用默认的WKWebViewConfiguration

【问题讨论】:

  • 您能否提供一个示例项目,例如 xcode 游乐场项目,其中问题可重现?
  • 不幸的是,该项目现在提供示例有点复杂。 WKWebView 是垂直 UIStackView 的子级,然后是 UICollectionView 的背景视图。

标签: javascript html ios wkwebview lottie


【解决方案1】:

WKWebView 初始化和首次加载很慢。最好在加载包含 WKWebView 的视图控制器之前初始化和加载 WKWebView。您可以使用下面的项目来检查他们是如何实现这一目标的,以供您参考,并且他们还比较了加载时间。

https://github.com/bernikovich/WebViewWarmUper

也希望加载动画不会花费太多时间。

【讨论】:

  • 谢谢。我昨晚实际上实现了类似的东西,现在它似乎正在工作。
  • 我在使用这个解决方案时遇到了一些问题。它似乎在 80% 的时间里都能正常工作。有时,即使视图已预热并保存在共享对象中,我也会得到空白屏幕。知道为什么会发生这种情况吗?
猜你喜欢
  • 2017-02-01
  • 2017-07-29
  • 2019-01-28
  • 2022-01-16
  • 2020-01-16
  • 2021-06-04
  • 2023-03-13
  • 2018-12-23
  • 2018-08-20
相关资源
最近更新 更多