xiezhihai7 2016-06-28 01:33 采纳率: 0%
浏览 10122

javascript localStorage 读取为空

第一次打开页面时读取到的localStorage值为空吗,只有第二次会读取到?
我请空浏览器缓存后打开页面,getItem读取到的localStorage为空,再次刷新后就有了,有办法第一次就能获取到吗?

代码如下:


/**
 * [setImgArr :设置需要本地缓存的图片数组]
 * 注意:图片按数组顺序存入localStroage,
 *       使用name="cacheswitch"属性作为标识
 * [getImgArr :将缓存图片取出,放入数组中]      
 * @type {Array}
 */

var setImgArr = [],
    getImgArr = [];
/**
 * [getImgSrc 获取页面中有标识的图片的src,添加到本地缓存数组中,并从本地缓存中取出赋值给img src]
 * 
 */
getImgSrc();
function getImgSrc() {
    $('img').each(function() {
        var attr=$(this).attr("name");
        if(attr=="cacheImg") {
            setImgArr.push($(this).attr("src"));
        }
    });

    for(i in setImgArr) {
        setImg(setImgArr[i]);//设置图片缓存
        getImg(setImgArr[i]);//获取图片缓存
    }

    var attrCache=document.getElementsByName("cacheImg");
    for(var i=0;i<attrCache.length;i++) {
        // attrCache[i].src=getImgArr[i];
    }
}

/**
 * [setImg 设置本地图片缓存]
 * @return {[type]} [description]
 */
function setImg(key) {
    var img=document.createElement('img');
    img.addEventListener('load',function(){
        //创建一个canvas
        var imgCanvas=document.createElement("canvas"),
            imgContext=imgCanvas.getContext("2d");
        //确保canvas元素的大小和图片尺寸一致
        imgCanvas.width=this.width;
        imgCanvas.height=this.height;
        //渲染图片到canvas中,使用canvas的drawImage()方法
        imgContext.drawImage(this,0,0,this.width,this.height);
        //用canvas的dataUrl的形式取出图片,imgAsDataURL是一个base64字符串
        var imgAsDataURL=imgCanvas.toDataURL("image/png");
        //保存到本地存储中
        //使用try-catch()查看是否支持localstorage
        try {
            localStorage.setItem(key,imgAsDataURL);//将取出的图片存放到localStorage
        }catch(e) {
            console.log("Storage failed:"+e);//存储失败
        }
    },false);
    img.src=key;
}
/**
 * [getImg 从本地缓存获取图片并且渲染]
 * @param  {[type]} key [localStorage中的键名称]
 * @return {[type]}     [存储值-base64的字符串]
 */

function getImg(key) {
    var srcStr = localStorage.getItem(key);//从localStorage中取出图片
    console.log(getImgArr);
    getImgArr.push(srcStr);

}

附上代码截图:

图片说明
图片说明

  • 写回答

1条回答

  • Go 旅城通票 2016-06-28 02:31
    关注

    第一次访问没有那个键肯定localStorage返回null了。。搞清楚执行循序先。

    评论

报告相同问题?

问题事件

  • 请详细说明问题背景 8月10日

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功