我正在寻找一个客户端JS库来存储会话变量。
我想要一个支持替代存储介质的库,例如cookies可用于其他技术的后备。 例如,我找到了这个(但最后一次更新是在2009年): http://code.google.com/p/sessionstorage/
我对安全性不感兴趣(除了应用程序之间的一些数据隔离),因为我不打算存储敏感数据。
举一个用例示例,我想为Chrome用户显示一条消息“Chrome用户?下载应用”,我希望在会话中保持状态,以避免再次向同一用户显示该消息。我不想要服务器端会话,因为我启用了缓存,所以我必须能够为不同的用户提供完全相同的页面。
答案 0 :(得分:2)
如果可以,您可以使用localStorage
,如果不可以,则使用Cookie(或您认为的任何内容):
var appToken = createToken();
try {
if (localStorage.getItem) {
localStorage.downloadAppAlert = appToken;
} else {
setCookie('downloadAppAlert', appToken, 10); // name, a string value, num. of days
}
} catch(e) {
console.log(e);
}
然后你可以使用一些功能来设置你的cookie - 即我在w3schools中找到的那个:
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
要通过示例中的名称 downloadAppAlert 检索cookie值,您可以使用w3schools链接上的那个或类似的内容:
function readCookie(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;
}
此外,要在localStorage
上检索以前设置的项目,您只需:
var appToken = localStorage.getItem('downloadAppAlert');
编辑:抱歉,我赶紧提及createToken()
的内容。它应该是一个随机的字母数字生成器函数。你可以在SO上找到很多,比如:
Random alpha-numeric string in JavaScript?
答案 1 :(得分:1)
使用mozilla的node-client-sessions(https://github.com/mozilla/node-client-sessions)。