最近搞微信公眾號的開發,需要本地存儲數據,這就產生了一個問題,微信中能不能用localStorage存數據?查找了網上資料,簡單總結一下。
▂▂▂▂__▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂_▂▂▂__▂▂▂▂
首先,微信環境其實是個webview組件而已,並不是真正意義上的什么內置瀏覽器。
安卓版微信直接調用系統瀏覽器內核,它是用chrome改造做的一套WKwebView,概念上類似是一套組建, iOS則是調用safari,
所以把微信內置的第三方網頁看成是在整個瀏覽器環境下的想法是錯誤的。
═∞═ ═∞══∞═ ═∞══∞═ ═∞══∞═ ═∞══∞═ ═∞══∞═ ═∞═
其次,微信內置第三方網頁中localStorage等, 是可以用,
有些機型不能存儲信息到localStorage中,或者是頁面一旦關閉或微信退出之后,存儲的信息也失效了。
百度上也有很多人吐槽這個問題,cookie和session都能解決。
═∞═ ═∞══∞═ ═∞══∞═ ═∞══∞═ ═∞══∞═ ═∞══∞═ ═∞═
於是想到用cookie來替代localStorage,存儲一些簡單的數據。上網查找了一下,發現w3school上已有不錯的解決方案。
//設置cookie function setCookie(c_name,value,expiredays) { var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } //取回cookie function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.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 "" }
示例:
//設置cookie,有效期為365天 setCookie('username','123',365); //取回,若cookie失效,將返回空 getCookie('username');
經過測試,完全兼容,沒有出現問題,但是這個微信退出重新登錄緩存就又沒了, 有需要的小伙伴可以參考下。
貼上原文地址:https://my.oschina.net/crazymus/blog/425650