Я строю визуализацию на основе SVG, которая (частично) полагается на отображение множества изображений в быстрой последовательности. Изображения не могут быть извлечены достаточно быстро из сети, поэтому они должны быть предварительно загружены.Лучший способ предварительной загрузки тегов изображений SVG?
Насколько я понимаю, SVG неправильно кэширует теги image
, по крайней мере, в основных браузерах. Поэтому JavaScript-предварительная загрузка librairies и методов (например, this SO question) не будет работать. (Я мог бы прибегнуть к использованию однослойному HTML img
тегов, но из-за специфики моего приложения, я хотел бы придерживаться чистого SVG как можно больше)
Я вижу два варианта:
- Кодировки по Данные изображения PNG в качестве base64, сохраняя его в памяти в виде строк и используя строки для итеративного заполнения
image
тегами с использованиемdata:image/png;base64
. - Наложение много групп SVG друг на друга со всеми, кроме одного, установленным в
display: none
илиvisibility: hidden
и итеративно, показывая соответствующую группу. Тем не менее, я считаю, что невозможно будет автоматически определить, что все изображения завершили предварительную загрузку.
Каков наилучший способ предварительной загрузки данных изображения? Возможно, я пропустил более простой вариант.
Ваши визы должны быть * все * SVG? Если нет, вы можете предварительно загрузить изображения в формате HTML, а затем наложить их на vis ... Это не сработает, если вам нужно их полностью интегрировать, однако, например, для применения клипов. – nrabinowitz
Да, как я упоминаю в своем вопросе, я бы предпочел, чтобы все это было SVG. (в противном случае мне потребовалось бы разделить мой виз на два слоя SVG, чтобы слой изображения был между ними) –