নীচে আমির আফ্রিদির প্রতিক্রিয়ার একটি পরিচ্ছন্ন সংস্করণ দেওয়া আছে যা এর সমস্ত কোড স্থানীয় আওতায় রাখে।
আমি এমন একটি রেফারেন্স সরিয়ে দিয়েছি যা একটি বৈশ্বিক ret
পরিবর্তনশীল তৈরি করে এবং সংরক্ষণযোগ্য "ট্রু" এবং "মিথ্যা" স্ট্রিংগুলির পার্সিংকে BrowserStorage.get()
মেথডের মধ্যে বুলিয়ান মানগুলিতে বিভক্ত করে ফেলেছে , যদি কেউ সত্যিকারের স্ট্রিংগুলিকে "সত্য" সংরক্ষণ করার চেষ্টা করে তবে সমস্যা হতে পারে "FALSE"।
যেহেতু স্থানীয় স্টোরেজ এপিআই কেবল স্ট্রিং মানগুলিকে সমর্থন করে, তারপরে কেউ জাভাস্ক্রিপ্ট ভেরিয়েবল ডেটা সংরক্ষণ করতে পারে এবং উপযুক্ত তথ্য প্রকারের সাথে এনকোড করে জেএসওএন স্ট্রিংয়ে ডেটা ডেকে আনে, যা জেএসএন এনকোড / ডিকোড লাইব্রেরি যেমন https ব্যবহার করে ডিকোড করা যায় : //github.com/douglascrockford/JSON-js
var BrowserStorage = (function() {
/**
* Whether the current browser supports local storage as a way of storing data
* @var {Boolean}
*/
var _hasLocalStorageSupport = (function() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
})();
/**
* @param {String} name The name of the property to read from this document's cookies
* @return {?String} The specified cookie property's value (or null if it has not been set)
*/
var _readCookie = function(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
};
/**
* @param {String} name The name of the property to set by writing to a cookie
* @param {String} value The value to use when setting the specified property
* @param {int} [days] The number of days until the storage of this item expires
*/
var _writeCookie = function(name, value, days) {
var expiration = (function() {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
return "; expires=" + date.toGMTString();
}
else {
return "";
}
})();
document.cookie = name + "=" + value + expiration + "; path=/";
};
return {
/**
* @param {String} name The name of the property to set
* @param {String} value The value to use when setting the specified property
* @param {int} [days] The number of days until the storage of this item expires (if storage of the provided item must fallback to using cookies)
*/
set: function(name, value, days) {
_hasLocalStorageSupport
? localStorage.setItem(name, value)
: _writeCookie(name, value, days);
},
/**
* @param {String} name The name of the value to retrieve
* @return {?String} The value of the
*/
get: function(name) {
return _hasLocalStorageSupport
? localStorage.getItem(name)
: _readCookie(name);
},
/**
* @param {String} name The name of the value to delete/remove from storage
*/
remove: function(name) {
_hasLocalStorageSupport
? localStorage.removeItem(name)
: this.set(name, "", -1);
}
};
})();