मैं एक एसवीजी-आधारित विज़ुअलाइज़ेशन का निर्माण कर रहा हूं जो (आंशिक रूप से) त्वरित उत्तराधिकार में कई छवियों को दिखाने पर निर्भर करता है। छवियों को नेटवर्क से पर्याप्त तेज़ी से नहीं लाया जा सकता है, इसलिए उन्हें प्रीलोड किया जाना चाहिए।एसवीजी छवि टैग प्रीलोड करने का सबसे अच्छा तरीका?
मेरे समझ के साथ कि एसवीजी ठीक से image
टैग कैश नहीं है, कम से कम प्रमुख ब्राउज़रों में है। तो जावास्क्रिप्ट प्रीबलोडिंग librairies और तकनीकें (उदाहरण के लिए this SO question) काम नहीं करेगा। (मैं स्तरित एचटीएमएल img
टैग का उपयोग का सहारा सकता है, लेकिन क्योंकि अपने आवेदन की बारीकियों की, मैं जितना संभव हो उतना शुद्ध एसवीजी पर कायम करना चाहते हैं)
मैं दो विकल्प देखेंगे:
- एन्कोडिंग बेस 64 के रूप में PNG छवि डेटा, तारों के रूप में स्मृति में भंडारण और तार का उपयोग कर iteratively
data:image/png;base64
का उपयोग करimage
टैग को भरने के लिए। display: none
याvisibility: hidden
करने के लिए सभी के साथ एक दूसरे के ऊपर है, लेकिन एक सेट पर कई एसवीजी समूहों Layering और iteratively उपयुक्त समूह दिखाते समय। हालांकि, मेरा मानना है कि कार्यक्रमिक रूप से यह पता लगाना संभव नहीं होगा कि सभी छवियों ने प्रीलोडिंग समाप्त कर दी है।
छवि डेटा पहले से लोड करने के लिए सबसे अच्छा तरीका क्या है? शायद मैं एक आसान विकल्प याद किया है।
करता है अपने विज़ सभी * एसवीजी * जा करने के लिए है? यदि नहीं, तो आप छवियों को HTML के रूप में प्रीलोड करने में सक्षम हो सकते हैं, फिर उन्हें दृश्य पर ओवरले कर सकते हैं ... यदि आप उन्हें पूरी तरह से एकीकृत करने की आवश्यकता है, तो यह काम नहीं करेगा, उदाहरण के लिए, उदा। क्लिप पथ लागू करने के लिए। – nrabinowitz
हां, जैसा कि मैंने अपने प्रश्न में उल्लेख किया है, अगर मैं सभी एसवीजी थे तो मैं बहुत पसंद करूंगा। (अन्यथा, मुझे दो एसवीजी परतों में अपने विज़ को विभाजित करने की आवश्यकता होगी ताकि छवि परत उनके बीच स्तरित हो) –