最近搞微信公众号的开发,需要本地存储数据,这就产生了一个问题,微信中能不能用localStorage存数据?查找了网上资料,简单总结一下。
首先,微信环境其实是个webview组件而已,并不是真正意义上的什么内置浏览器。
安卓版微信直接调用系统浏览器内核,它是用chrome改造做的一套WKwebView,概念上类似是一套组建, iOS则是调用safari,
所以把微信内置的第三方网页看成是在整个浏览器环境下的想法是错误的。
其次,微信内置第三方网页中localStorage等, 是可以用,
有些机型不能存储信息到localStorage中,或者是页面一旦关闭或微信退出之后,存储的信息也失效了。
百度上也有很多人吐槽这个问题,cookie和session都能解决。
于是想到用cookie来替代localStorage,存储一些简单的数据。上网查找了一下,发现w3school上已有不错的解决方案。
//设置cookie
function setCookie(key, value, expiredays){
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = key + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString());
}
//取回cookie
function getCookie(key){
if(document.cookie.length > 0){
c_start = document.cookie.indexOf(key + "=");
if(c_start != -1){
c_start = c_start + key.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if(c_end == -1){
c_end = document.cookie.length;
}
return unescape(document.cookie.substring(c_start, c_end));
}
}
return "";
}
$(function(){
//alert(window.location.href);
//setTimeout('WeixinJSBridge.call("closeWindow")', 1500);
//设置cookie,365天
setCookie("eset_cd", "18826553+12345678", 356*24*60*60*1000);
alert(getCookie("eset_cd"));
});
经过测试,当杀死微信进程或者清理垃圾或者手机重启的时候,cookie缓存的信息依然存在,但是当微信通过设置退出重新登录的时候缓存就又没了。
完!!!