अपडेट (2016-11-01)
मैं इस मुद्दे के आसपास काम करने के लिए नीचे उल्लिखित AmplifyJS का उपयोग कर रहा था। हालाँकि, सफारी फॉर प्राइवेट ब्राउजिंग में, यह मेमोरी-आधारित स्टोरेज पर वापस गिर रहा था। मेरे मामले में, यह उचित नहीं था क्योंकि इसका मतलब है कि भंडारण ताज़ा होने पर साफ़ हो जाता है, भले ही उपयोगकर्ता अभी भी निजी ब्राउज़िंग में हो।
इसके अलावा, मैंने ऐसे कई उपयोगकर्ताओं पर ध्यान दिया है जो हमेशा iOS सफारी पर निजी मोड में ब्राउज़ कर रहे हैं। उस कारण से, सफारी के लिए एक बेहतर कमबैक कुकीज़ (यदि उपलब्ध हो) का उपयोग करना है। डिफ़ॉल्ट रूप से, कुकीज़ अभी भी निजी ब्राउज़िंग में सुलभ हैं। बेशक, निजी ब्राउज़िंग से बाहर निकलने पर उन्हें हटा दिया जाता है, लेकिन ताज़ा होने पर उन्हें साफ़ नहीं किया जाता है।
मुझे लोकल-स्टोरेज-फ़ॉलबैक लाइब्रेरी मिली । प्रलेखन से:
उद्देश्य
"प्राइवेट ब्राउजिंग" जैसी ब्राउज़र सेटिंग्स के साथ नए विंडो में भी काम करने वाली विंडो.लोकलस्टोरेज पर भरोसा करना एक समस्या बन गई है। हालांकि यह मौजूद हो सकता है, यह setItem या getItem का उपयोग करने की कोशिश करते समय अपवादों को फेंक देगा। यह मॉड्यूल यह देखने के लिए उपयुक्त जाँच चलाएगा कि ब्राउज़र भंडारण तंत्र क्या उपलब्ध हो सकता है, और फिर उसे उजागर करें। यह लोकस्टस्टोरीज के समान एपीआई का उपयोग करता है इसलिए इसे ज्यादातर मामलों में ड्रॉप-इन प्रतिस्थापन के रूप में काम करना चाहिए।
गोचरों से सावधान रहें:
- कुकीस्टोरीज में स्टोरेज सीमा होती है। यहां सावधान रहें।
- मैमोरीस्टोरेज पेज लोड के बीच नहीं रहेगा। यह पेज क्रैश को रोकने के लिए कम या ज्यादा स्टॉप-गैप है, लेकिन उन वेबसाइटों के लिए पर्याप्त हो सकता है जो पेज लोड नहीं करते हैं।
टी एल; डॉ:
का प्रयोग करें स्थानीय भंडारण-फ़ॉलबैक (साथ एकीकृत एपीआई .getItem(prop)
और .setItem(prop, val)
):
ब्राउज़र के लिए उचित भंडारण एडाप्टर की जाँच करें और उसका उपयोग करें (लोकलस्टोरेज, सेशनस्टोर, कुकीज, मेमोरी)
मूल उत्तर
पिछले उत्तरों को जोड़ने के लिए, भंडारण पद्धति को बदलने के लिए एक संभावित समाधान होगा। AmplifyJS और PersistJS जैसे कुछ लिब्रेरीज़ हैं जो मदद कर सकते हैं। दोनों ही काम कई बैकएंड के माध्यम से लगातार क्लाइंट-साइड स्टोरेज की अनुमति देते हैं।
AmplifyJS के लिए
स्थानीय भंडार
- IE 8+
- फ़ायरफ़ॉक्स 3.5+
- सफारी 4+
- क्रोम
- ओपेरा 10.5+
- iPhone 2+
- Android 2+
sessionStorage
- IE 8+
- फ़ायरफ़ॉक्स 2+
- सफारी 4+
- क्रोम
- ओपेरा 10.5+
- iPhone 2+
- Android 2+
globalStorage
उपयोगकर्ता का आधार - सामग्री
- IE 5 - 7
- userData IE के नए संस्करणों में भी मौजूद है, लेकिन IE 9 के कार्यान्वयन में quirks के कारण, हम localDorage द्वारा समर्थित होने पर उपयोगकर्ताडेटा को पंजीकृत नहीं करते हैं।
स्मृति
- अन्य स्टोरेज प्रकारों में से कोई भी उपलब्ध नहीं होने पर, इन-मेमोरी स्टोर को फ़ॉलबैक के रूप में प्रदान किया जाता है।
PersistentJS के लिए
- फ्लैश: फ्लैश 8 लगातार भंडारण।
- गियर: Google गियर्स-आधारित निरंतर संग्रहण।
- स्थानीयस्टोरेज: HTML5 ड्राफ्ट स्टोरेज।
- Globalstorage: HTML5 ड्राफ्ट भंडारण (पुरानी कल्पना)।
- यानी: इंटरनेट एक्सप्लोरर यूजरडेटा व्यवहार।
- कुकी: कुकी-आधारित निरंतर भंडारण।
वे एक अमूर्त परत की पेशकश करते हैं ताकि आपको भंडारण प्रकार चुनने के बारे में चिंता न करें। ध्यान रखें कि हालांकि भंडारण प्रकार के आधार पर कुछ सीमाएँ (जैसे आकार सीमाएँ) हो सकती हैं। अभी, मैं AmplifyJS का उपयोग कर रहा हूं, लेकिन मुझे अभी भी iOS 7 / Safari / etc पर कुछ और परीक्षण करना है। यह देखने के लिए कि क्या यह वास्तव में समस्या को हल करता है।