//key:value|key:value var windowStorage = { _inited: false, _data: {}, init: function(str) { var tmpData, key, value, kv; this._inited = true; if (str && typeof str == 'string') { tmpData = str.split('|'); for (var i = 0, len = tmpData.length; i < len; i++) { kv = tmpData[i].split(':'); key = unescape(kv[0]); value = unescape(kv[1]); this._data[key] = value; } } else if (typeof str == 'object') { this._data = str; } }, read: function(key) { if (!this._inited) { throw new Error('Please initialize before reading.'); } return this._data[key]; }, write: function(key, value) { var str = []; if (!this._inited) { throw new Error('Please initialize before writing.'); } this._data[key] = value; for (var k in this._data) { str.push(escape(k) + ':' + escape(this._data[k])); } window.name = str.join('|'); } };