|
本帖最后由 huguoba 于 2015-11-18 09:14 编辑
上代码,可以看下,有不明白的发帖再讨论。参考了论坛某位大神的方法,然后完善了下,记不得帖子代码了。有问题的跟帖讨论。
function iCache(selector) {
selector.each(function(data) {
//msg(data);
! function(data) {
var url = selector.eq(data).attr("src");
var img = this;
var filename = GetFileName(url);
var path = "cache://" + filename;
var obj = api.require('fs');
obj.exist({
path : path
}, function(ret, err) {
//msg(ret);
if (ret.exist) {
if (ret.directory) {
//api.alert({msg:'该路径指向一个文件夹'});
} else {
//api.alert({msg:'该路径指向一个文件'});
//selector.eq(data).src=path;
selector.eq(data).attr('src', null);
path = api.cacheDir + '/' + filename;
selector.eq(data).attr('src', path);
//console.log(selector.eq(data).attr("src"));
}
} else {
api.download({
url : url,
savePath : path,
report : false,
cache : true,
allowResume : true
}, function(ret, err) {
//msg(ret);
if (ret) {
var value = ('文件大小:' + ret.fileSize + ';下载进度:' + ret.percent + ';下载状态' + ret.state + '存储路径: ' + ret.savePath);
} else {
var value = err.msg;
};
});
}
});
}(data);
});
};
1.定义使用标签<img src="http://域名/aaa.jpg" class="cache">,比如
<body>
<ul>
<li><img src="http://域名/a.jpg" class="cache"></li>
<li><img src="http://域名/ab.jpg" class="cache"></li>
<li><img src="http://域名/aab.jpg" class="cache"></li>
<li><img src="http://域名/aaab.jpg" class="cache"></li>
</ul>
</body>
//此处是引用的库文件,api.js,zepto.js等
<script XXXXX >
<script>
function iCache(){
//上面的定义
}
apiready=function(){
//(1)初始化工作
//2获取数据
//3封装页面
//4过滤页面链接
iCache($('.cache'));
}
</script>
2.引入zepto.js
3.利用dom.js等模板库或者封装字符串做好页面元素布局
4.iCache($('.chache'))调用即可
效果,第一次是使用网络路径,之后即可缓存到本地,后面打开就不会去访问网络地址了。
|
|