关于HMLT5离线缓存的痛,痛经有多痛就有多痛(hybrid应用加载)
一、先看下脑图
二、前面一篇文章简单的说了下manifest文件的缓存。
前面的文章能解决问题,但是带来了更多的致命问题,最后想到这个办法。
也碰到了一些关于HTML加载执行的问题,主要是页面和JS执行的顺序问题。
关于源码暂时还没整理出来~~有需要了解的可以找我交流~~~
(function(window, undefined) { //资源请求 function loadResource(resources, callback) { if (Object.prototype.toString.call(resources) !== "[object Array]"){return;} var index = 0,cacheStr='',errorCache=false; (function _load(ary) { var opt = ary.shift(); if (!opt) { localStorage.cacheStrJs=cacheStr; if(!errorCache){ localStorage.versioning=versioning; "function" == typeof callback && callback(); }else{ //资源文件请求异常进行二次请求,直到全部缓存资源成功才结束 loadResource([ {path: 'css/index.css',sName: 'index'}, {path: 'js/utils.js',sName: 'utils'}, {path: 'js/keycode.js',sName: 'keycode'}, {path: 'js/videoplay.js',sName: 'videoplay'}, {path: 'js/initial.js',sName: 'initial'}, {path: 'js/keyevent.js',sName: 'keyevent'}, {path: 'js/uianimate.js',sName: 'uianimate'}, {path: 'js/videoapp.js',sName: 'videoapp'} ], function () { cache(); console.log("二次加载完成完成完成!"); }); } } try { var url; if(index<8){ url=opt.path+'?v='+versioning; }else{ url=opt.path; } $.ajax({ url : url, type : "GET", dataType:'text', success : function (data) { if(index<8){ if(index==0){ localStorage[opt.sName]=data; }else{ cacheStr+=data; } } index++; _load(ary); }, error : function() { index++; if(index<8){ errorCache=true; _load(ary); } } }); }catch (e){ } })(resources); }; loadResource([ {path: 'css/index.css',sName: 'index'}, {path: 'js/utils.js',sName: 'utils'}, {path: 'js/keycode.js',sName: 'keycode'}, {path: 'js/videoplay.js',sName: 'videoplay'}, {path: 'js/initial.js',sName: 'initial'}, {path: 'js/keyevent.js',sName: 'keyevent'}, {path: 'js/uianimate.js',sName: 'uianimate'}, {path: 'js/videoapp.js',sName: 'videoapp'}, {path: 'images/iocl.png'}, {path: 'images/ico.png'}, {path: 'images/other.png'}, {path: 'images/ylowbg.png'}, {path: 'images/tvb.png'}, {path: 'images/zyi.png'}, {path: 'images/comic.png'}, {path: 'images/child.png'}, {path: 'images/movie.png'}, {path: 'images/serch.png'}, {path: 'images/moive.png'}, {path: 'images/history.png'}, {path: 'images/tv.png'}, {path: 'images/zy.png'}, {path: 'images/video.png'}, {path: 'images/indxbg.jpg'}, {path: 'images/movdet.jpg'}, {path: 'images/tvdet.jpg'}, {path: 'images/zydet.jpg'}, {path: 'images/hotdef.png'}, {path: 'images/kidsdet.jpg'}, {path: 'images/comicdet.jpg'}, {path: 'images/fao.jpg'}, {path: 'images/his.jpg'}, {path: 'images/favdet.jpg'}, {path: 'images/hisdet.jpg'}, ], function () { cache(); console.log("加载完成完成完成!"); }); })(window);