var a = function() { alert(arguments[0]) } (1,2,3);
What’s the alerted value and how that works?
var a = function() { alert(arguments[0]) } (1,2,3);
What’s the alerted value and how that works?
Today I saw a interesting article in one of my favorite blogs – ajaxian.com. From now on Opera will support the <video> tag in the new version 10.50.
Actually there is a bunch of new features in that version, but I was curious which codec will be supported, as I was interested in that from my previous post!
supporting OGG. Vorbis and Theora!
After submitting the HTML5 localStorage wrap plugin for jQuery, there comes the new version, hopefully more stable and reliable!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | (function(jQuery) { var supported = true; if (typeof localStorage == 'undefined' || typeof JSON == 'undefined') supported = false; else var ls = localStorage; this.setItem = function(key, value, lifetime) { if (!supported) return false; if (typeof lifetime == 'undefined') lifetime = 60000; ls.setItem(key, JSON.stringify(value)); var time = new Date(); ls.setItem('meta_ct_'+key, time.getTime()); ls.setItem('meta_lt_'+key, lifetime); }; this.getItem = function(key) { if (!supported) return false; var time = new Date(); if (time.getTime() - ls.getItem('meta_ct_'+key) > ls.getItem('meta_lt_'+key)) { ls.removeItem(key); ls.removeItem('meta_ct_'+key); ls.removeItem('meta_lt_'+key); return false; } return JSON.parse(ls.getItem(key)); }; this.removeItem = function(key) { if (!supported) return false; ls.removeItem(key); ls.removeItem('meta_ct_'+key); ls.removeItem('meta_lt_'+key); return true; }; jQuery.localStorage = this; })(jQuery); if (!$.localStorage.getItem('test')) { $.localStorage.setItem('test', ['stoimen'], 5000); console.log('dynamic'); } else { console.log('from cache'); } |
I’ve decided to wrap the functionality of HTML5 localStorage in a jQuery plugin, with the simple functionality of a lifetime period for every cache. I’m going to post only the pre-release with the idea to clean up the code in the recent future.
(function(jQuery) {
var supported = true;
if (typeof localStorage == 'undefined' || typeof JSON == 'undefined')
supported = false;
else
var ls = localStorage;
this.setItem = function(key, value, lifetime) {
if (!supported)
return false;
ls.setItem(key, JSON.stringify(value));
var time = new Date();
ls.setItem('meta_ct_'+key, time.getTime());
ls.setItem('meta_lt_'+key, lifetime);
};
this.getItem = function(key) {
var time = new Date();
if (!supported || time.getTime() - ls.getItem('meta_ct_'+key) > ls.getItem('meta_lt_'+key))
return false;
return JSON.parse(ls.getItem(key));
};
this.removeItem = function(key) {
return supported && ls.removeItem(key);
};
jQuery.localStorage = this;
})(jQuery);
if (!$.localStorage.getItem('test')) {
$.localStorage.setItem('test', ['stoimen'], 600000);
alert('dynamic');
} else {
alert('from cache');
}
Any feedback is welcome! Yet again the code isn’t tested at all.