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

  • 相关阅读:
    HDU 4691
    cin和scanf的速度差别
    一点点webservice的小知识
    Geetest 极验验证 验证图片拼图
    web api post传一个参数时 值永远是null
    关于支付宝支付的
    发布网站后只能在服务器上访问 外网访问不了??
    sidePagination: "server"和responseHandler: responseHandler
    .net 找回密码的第一步 第二步 第三步的进程条
    关于设置一个全局只读变量来实现验证
  • 原文地址:https://www.cnblogs.com/toggle/p/9376997.html
Copyright © 2011-2022 走看看