zoukankan      html  css  js  c++  java
  • 关于微信中的localStorage及使用cookie的解决方案

    最近搞微信公众号的开发,需要本地存储数据,这就产生了一个问题,微信中能不能用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

  • 相关阅读:
    结巴分词 0.14 版发布,Python 中文分词库
    Lazarus 1.0.2 发布,Pascal 集成开发环境
    Android全屏 去除标题栏和状态栏
    服务器日志现 Android 4.2 传将添多项新特性
    Percona XtraBackup 2.0.3 发布
    长平狐 Android 强制设置横屏或竖屏 设置全屏
    NetBeans 7.3 Beta 发布,全新的 HTML5 支持
    CppDepend现在已经支持Linux
    GromJS 1.7.18 发布,服务器端的 JavaScript
    Apache OpenWebBeans 1.1.6 发布
  • 原文地址:https://www.cnblogs.com/toggle/p/9376997.html
Copyright © 2011-2022 走看看