我正在构建一个基于 SVG 的可视化,它(部分)依赖于快速连续显示许多图像。从网络中获取图像的速度不够快,因此必须预先加载它们。
我的理解是 SVG 没有正确缓存image
标签,至少在主流浏览器中是这样。所以 JavaScript 预加载库和技术(例如这个 SO question)将不起作用。(我可以使用分层的 HTMLimg
标签,但由于我的应用程序的特殊性,我想尽可能地坚持纯 SVG)
我看到两个选项:
- 将 PNG 图像数据编码为 base64,将其作为字符串存储在内存中,并使用字符串迭代地填充
image
标签data:image/png;base64
。 - 将许多 SVG 组层叠在一起,除了一组之外的所有组都设置为
display: none
orvisibility: hidden
并迭代地取消隐藏适当的组。但是,我相信不可能以编程方式检测到所有图像都已完成预加载。
预加载图像数据的最佳方法是什么?也许我错过了一个更简单的选择。