我需要缓存四种类型的图片当页面glide 加载本地缓存时默认缓存显示type为1的图片 点击事件发生后开始缓存其他类型的图片

输入关键字或相关内容进行搜索
之前有写过&&h5+的Downloader下载网络图片缓存到本地的案例&& http://ask.dcloud.net.cn/article/256
但后来才发现图片比较多时,downloader创建过多,手机立马发烫;
后来解决了也没有更新;
今天项目刚发出去,稳定下来;现在重新整理了一个案例分享给大家;主要优化和解决的问题:
1.图片显示,先检查本地是否存在,如果存在则使用本地;如果不存在则联网下载,保存在本地
2.使用背景控制图片样式;比src灵活;
3.不同的场景,使用不同的图片下载默认图;(我项目中头像和产品的下载默认图是不一样的)
4.单个downloader下载,避免网速快或图片多创建过多downloader,导致手机发烫的问题
5.避免任务队列中,图片已存在,downloader下载卡顿的问题
6. 加入下载完成的渐变动画,
7. 其他,,自己发现..使用方法很简单:两步!!!
1.导入imgload.css
imgload.js
md5.min.js 还有一张透明图translate.png
2.联网获取数据后,拼接的img格式为:&img sr c='默认图片' data-sr c='网络地址' onload='load(this)'/&好了,具体看附件的案例
https://ask.dcloud.net.cn/article/166
if (!isStartTask) {
isStartTask =
startTask();
开始isStartTask默认是false,第一个可以下载,那么第一个下载完成后,应该把isStartTask设置成false,每次下载完成都应该把isStartTask设置成false,我看到function startTask() {
if (taskArr.length == 0) {
isStartTask =
作者是想,任务数为0就改成false;可是任务数是在之后才删除的
//从任务集合中取一个任务
var obj = taskArr.shift();//删除并返回数组的第一个元素
我的意思是当第一个下载完成,isStartTask其实还是true,没法往下执行
其实,非常感谢作者,其实我一直也想做图片本地缓存,但是,思路一直想不明白要怎么做,看了作者的案例,才恍然大悟,截取网络路径的最后一个字段即自文件名,来拼接一个(下载图片的默认路径)本地文件的路径。然后如果能读取到文件,说明是本地有的,如果读取不到则说明需要下载。有了这个思路,其实用vue来做更加方便,不需要使用id来设置图片的src,如果本地有图片,我只需要把这个图片的本地路径添加到一个数组,即可在视图展示。如果想删除图片,把数组中的图片路径传过来,即可进行删除本地的文件。自己分析了一下,用vue其实省很多代码。有一个其他的缓存问题。我们知道安卓是由本地数据库的,如果没有网络,他们是可以正常打开APP获取本地数据库的缓存的数据,但是5+好像并没有封装读取操作本地数据。所以一旦手机没有网络,打开app是没有数据的。请教一下作者有没有这方面的高见呢?先谢谢了~
两年前写的文章了,经历了这么久,后来发觉其实没有必要下载图片缓存本地,因为Webview本身也有缓存,而且现在图片云服务器也很给力,再退一步来说,没有网络或者网络比较慢,浏览APP其他非图片数据体验也很差的哇,现在4G网络很好的了,只要后台图片优化好,前端展示图片也是很快的
所以 你现在用vue的话 可以这样写
&img v-for=&imgpath in imgArr& :src=&imgpath & onload=&inOpacity(this)& onerror=&this.src='默认图地址'&/&
/*渐显 opacity*/
function inOpacity(imgObj_id){
var imgDom = (typeof imgObj_id == &object&) ? imgObj_id : document.getElementById(imgObj_id);
imgDom.classList.add(&anim_opacity&); //渐变动画
多谢分享,我现在有个问题。项目中用到vue框架,然后用v-for循环来显示多张图片,用了你的onload=&load(this)& 方法,每次都报错说在plusReady后调用,然后我又在vue里根据生命周期等dom渲染完毕后去调用onload方法,但是只有v-for里面的一个Img,而不是循环的每个图片标签,这个怎么解决呀?
我的也是,你解决了吗?
ios下第一次运行程序下载了图片,然后杀掉进程,重开,又会下载一次
头像缓存下来,一开始联网也会,,但是点击当前页面的打开的webview,返回时会卡顿,硬件加速也木有用,
为什么我运行你的dome,会执行3次下载操作,好像是频繁操作innerHTML造成的。
android下载方式和ios下载文件的方式不一样吗
为什么ios启动任务调的监听返回的status是null呢
楼主,在IOS手机里无法检测到图片已经存在,明明图片已经存在了,还是会重新下载,咋办
好东西,收藏了
官方download的问题,更新一下看看是否已解决
今天官方又更新了版本,修复了下载异常.. 闪退不是方案的问题啦..
用最新的SDK使用你的方案就会闪退,用之前我们使用的稳定版本,就木有问题
用了你的方案出现了闪退~~~orz
网络图片路径中包含中文,控制台显示回调400,但却下载下来了
你好,我问个问题。我现在的应用是有个离线点读课件的app.APP既支持在线点读,又支持离线点读。
离线点读我的方案是:
从服务器下载一个包含html,js,css,图片文件,音频文件的压缩文件。
我看了一下已经下载下来。下载的路径为_downloads/7.zip。
下载完后解压,到_downloads/7目录下。
然后在往websql中记录一条记录去记录下载的课件信息。
然后展现,供离线点读。
离线点读的方案是我打开_downloads/7/diandu.html
然后里面的各种图片,mp3资源都在zip里面。都为相对路径访问
我不知道我这种方案能否实现。
我现在遇到的问题是解压的时候报错了。
日志是这样的
链接到服务器... at html/studytool/diandu_list.html:255
Download success: _downloads/7.zip at html/studytool/diandu_list.html:230
下载完成! at html/studytool/diandu_list.html:261
at html/studytool/diandu_list.html:262
文件都已经存在了。报下面的错误
Compress error!{&code&:2,&message&:&open failed: EINVAL (Invalid argument)&}
plus.zip.decompress(&_downloads/7.zip&, &_downloads/&,
function() {
alert(&Decompress success!&);
function(error) {
console.log(&Compress error!& + JSON.stringify(error));
明白,谢谢
这个图片轮播是新的webview 然后里面是mui的轮播 哈哈
真棒,感谢wenju的分享
你写的图片轮播预览 可以分享下吗?
src和背景 对性能有影响的吗 这个确实没有研究过哦
使用背景控制图片样式;比src灵活;
用背景控制是比较灵活,不过在一些低端的手机上滚动不会卡顿吗?
亲 download 只是适合Android和IOS
http://124.232.133.74:1016/index.html
我这个啥都没显示
好了,谢谢,原来是之前改过一次translate.png,忘记改回来了
刚仔细看了下代码,有个地方引用的时候少些了个&
现在能调到数据了,就是还是没有显示出来
[LOG] : 从任务集合中取一个任务==_downloads/image/a1b334efc5ffb08e5a7758.jpg
[LOG] : 下载回调status==200--&_downloads/image/a1b334efc5ffb08e5a7758.jpg
[LOG] : 从任务集合中取一个任务==_downloads/image/20a6aa052b34bb53996ef26.jpg
[LOG] : 下载回调status==200--&_downloads/image/20a6aa052b34bb53996ef26.jpg
只显示adnew1图片,照片标题photoTitle 显示都是正确的.
用console.log输出,photoTitle和photoURL也都是正确的,好像没有执行懒加载.
另外报错了:
[ERROR] : ReferenceError: Can't find variable: load
file name:html/main/photos.html
显示本地的图片是指只显示adnew1.jpg还是说只显示本地缓存的图呢;这些也很容易调试,debug看看load是否执行了就知道啦;不会debug就输出一下呗; 也有可能load函数其他js已经有了??
mui.ajax('http://192.168.2.26:8027/jsonp.ashx', {
dataType: 'json', //服务器返回json格式数据
type: 'get', //HTTP请求类型//{&dt&:{&data&:[{&id&:&461&,&albumid&:&29&,&title&:&坝上晨韵&,&content&:&&,&bpic&:&http://www.ttcy.cn/ttcy/images/Album_Picture/Picture/250B
success: function(message) {
//获得服务器响应
var newData = JSON.stringify(message);
newData = eval('(' + newData + ')'); //转为json对象
var dataArr = newData.dt.
console.log(dataArr);
var photoURL = &&;
var photoTitle = &&;
var productList = document.getElementById(&_ul&);
var content = &&;
for (var i = 0, len = dataArr. i & i++) {
photoTitle = dataArr[i].
photoURL = dataArr[i].
// 第一行采用双引号包裹,是因为对象序列化以后,里面采用的是&&,如果data-detail属性外面依旧用&&,转义会出问题
content += &&li class='mui-table-view-cell mui-media mui-col-xs-6'&& +
'&img style=&height:120px& src=&../../image/adnew1.jpg& data-src=&' + photoURL + '&
data-preview-group=&1& onload=&load(this)&&' +
'&div class=&mui-media-body&&' + photoTitle + '&/div&&/li&';
productList.innerHTML =
麻烦帮我看一下,一直都没加载,只是显示本地的图片
mui image preview用过一次 因为在安卓机 比如小米和三星系列的 有问题 就摒弃了 ;
冲突的话 确实没有特别的研究;
现在的图片轮播预览是自己写的
一个小问题,如果同时引入mui image preview,则图像第1次无法正确显示,第2次再进入则完全正常,似乎第1次load未完成就显示了部分图片。不知这二者是否有冲突?
挺好的呀,正需要呢
感觉没问题
我已经找到问题所在了,因为我在导包的时候导入的是最新版本的两个jar包,然而我之前用的今年2月份发布的版本,缺少了一个基础包,然而我把缺的那个基础包导进去的时候就报包冲突的错误,我只能找回我最原始版本那些SDK中的那两个jar包放进去就没有问题了,这只能怪mui新版不兼容旧版本
action=convertLocalFileSystemURL;请检查assets/data/properties.xml文件是否添加file相关节点。或者not found downlo action=createD请检查assets/data/properties.xml文件是否添加downloader相关节点。一直报这两个错,但是我明明在properties已经存在的了。你写的都有
你这是集成Android原生吧 确定是报节点错误吗? 如果是的话 downloader有两个节点的
features中的一个
name=&Downloader&
value=&io.dcloud.net.DownloaderFeatureImpl& &
&/feature&
services中一个
&services&
name=&Downloader&
value=&io.dcloud.net.DownloaderBootImpl& /&
&/services&
downloader.jar
file.jar 这两个导入后一直说找不到节点,我都已经配置好properties了
这个不适合img预先写在body 因为此时plus还未初始化 请在js中调用onload
写好的&img&调用load就会显示plus的错误 Uncaught ReferenceError: load is not defined
不好意思 各位最近忙着赶项目 暂时没法回答各位的问题 @villayong @purple 如有解决的 可分享给大家
现在是保存到了/storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/downloads/image/路径下,
通过手机的文件管理找不到这个目录, 如何变更目录?
我用的是angular的,想着写一个ng-cache-src指令,加个storage应当也是够用了
downloader模块我本身写好线程数了= =问题不大
你说的默认图是没图的时候展示么, 那我写个attr(default-src)在element上也是可行的
还有什么问题呢,不知道了= =先去写写
嗯,是没有问题,是我的png图片跟我的样式有冲突
还有个问题,想增加一个清除缓存的算法,但现在不知道如何计算sd卡的剩余空间大小,以及已经下载的所有图片总空间,看了下h5的接口,好像没有计算一个文件夹的大小,只有计算某个文件的大小,请问知道如何获取吗?
亲 这个和图片格式没有关系的哦 我刚刚测试了 Android上无此问题哈 ; 如果确实您这边有问题 可以发个png网络地址给大家试试
多谢分享!!
有个问题,如果是Android平台,png格式的图片无法显示,ios平台无此问题,希望改进!
此问题官方已经解决的了 你升级下最新版本hb和mui.js mui.css
http://ask.dcloud.net.cn/question/10547
ios可以,米4的情况,plus报Uncaught SyntaxError: Unexpected token } 查出来是plus.downloader.createDownload这一句代码有问题
能帮到你就太好了 O(∩_∩)O~
明白了,我本来想的是,如果本地没有文件的话,图片src就设置上线上地址。我的逻辑有点混乱了,现在明白了
检查本地是否存在 读的是本地文件 和网络无关系呢; 如果正在下载图,断网了,我设置的downloader会重试2次,超时10秒
有个问题,如果在断网状态,图片的onerror事件会不会重复执行。
多谢分享,借鉴了很多地方!
代码已更新 下载的请更新一下
@水御双氛 谢谢提醒 我的错 应该是download.abort(); 下载失败取消任务 删除本地文件
dtask.abort();这一句中dtask代表什么,单看源码貌似是undefined?
很不错的东东,学习了
谢@.迟点来看
特别注意的地方:
第一次使用,请检查imgload.js中第一行的translate.png路径是否和你项目的一致
比如是不是images/translate.png或者../images/translate.png
要回复文章请先或
https://github.com/mescroll/mescroll.git -- 精致的下拉刷新和上拉加载js框架. 主流APP案例, 一套代码多端运行~ 问题咨询请发私信哈~
赞助DCloud可免广告,
赞助DCloud可免广告,Access denied | blog.baiwand.com used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (blog.baiwand.com) has banned your access based on your browser's signature (a417-ua98).博客分类:
在项目中经常会使用到WebView控件,当加载html页面时,会在/data/data/应用package目录下生成database与cache两个文件夹如下图如示:
请求的url记录是保存在webviewCache.db,而url的内容是保存在webviewCache文件夹下.
为了便于理解,接下来模拟一个案例,定义一个html文件,在里面显示一张图片,用WebView加载出来,然后再试着从缓存里把这张图片读取出来并显示。
第一步:新建一个Android工程命名为WebViewCache.目录结构如下:
第二步:在assets目录下新建一个html文件,命名为index.html
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&title&WebViewCacheDemo&/title&
&meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
&meta http-equiv="description" content="this is my page"&
&meta http-equiv="content-type" content="text/ charset=UTF-8"&
&img src="http://img04.taobaocdn.com/imgextra/i4//T2nGXBXXpaXXXXXXXX_!!.jpg_310x310.jpg"/&
第三步:修改main.xml布局文件,一个WebView控件一个Button(点击加载缓存图片用),代码如下:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"&
&WebView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/webView"/&
&Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="从缓存读取图片"
android:id="@+id/button"/&
&/LinearLayout&
第四步:修改主核心程序WebViewCacheDemo.java,这里我只加载了index.html文件,按钮事件暂时没写,代码如下:
package com.ljq.
import java.io.F
import java.io.FileInputS
import android.app.A
import android.app.D
import android.app.AlertDialog.B
import android.content.DialogI
import android.content.DialogInterface.OnClickL
import android.graphics.B
import android.graphics.BitmapF
import android.os.B
import android.view.V
import android.webkit.WebV
import android.widget.B
import android.widget.ImageV
public class WebViewActivity extends Activity {
private WebView webV
private static final String url="file:///android_asset/index.html";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView=(WebView)findViewById(R.id.webView);
webView.loadUrl(url);
第五步:在AndroidMainifest.xml文件中加访问网络的权限:
&uses-permission android:name="android.permission.INTERNET" /&
运行效果如下:
此时我们在WebViewCache.db里的cache.table里多了一条记录如下图所示:
在cache/webviewCache/目录下多了一个10d8d5cd文件,刚好和cache.table里的filepath,我们可以断定这个文件就是我们从网上拽下来的图片:
为了验证猜想,我给Button增加事件响应,就是弹出Dialog,里面加载缓存的图片,完整代码如下:
package com.ljq.
import java.io.F
import java.io.FileInputS
import android.app.A
import android.app.D
import android.app.AlertDialog.B
import android.content.DialogI
import android.content.DialogInterface.OnClickL
import android.graphics.B
import android.graphics.BitmapF
import android.os.B
import android.view.V
import android.webkit.WebV
import android.widget.B
import android.widget.ImageV
public class WebViewActivity extends Activity {
private WebView webV
private static final String url="file:///android_asset/index.html";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView=(WebView)findViewById(R.id.webView);
webView.loadUrl(url);
//点击按钮时弹出对话框
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ImageView imageView=new ImageView(WebViewActivity.this);
imageView.setImageBitmap(getPictureFromCache());
Builder builder=new android.app.AlertDialog.Builder(WebViewActivity.this);
//设置对话框的图标
builder.setTitle("从缓存查看图片");
builder.setView(imageView);
//退出按钮
builder.setPositiveButton("退
出", new OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
//关闭alert对话框架
dialog.cancel();
builder.create().show();
* 从缓存获取图片
* @return*/
private Bitmap getPictureFromCache(){
Bitmap bitmap=null;
//这里写死,在实际开发项目中要灵活使用
File file=new File(getCacheDir()+"/webviewCache/10d8d5cd");
FileInputStream inStream=new FileInputStream(file);
bitmap=BitmapFactory.decodeStream(inStream);
} catch (Exception e) {
e.printStackTrace();
第六步:再次运行工程,点击button按钮,效果如下图所示:
浏览: 491251 次
来自: 山西
博主威武!
原来那些类都不是必须的
或者自己写!!博主真棒 ...
请问你的其他类在哪里呢?
其他类在哪呢?
很喜欢博主的一句话,“问题嘛,总还是要解决的”
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'菜鸟也有春天
Android 从WebView缓存中获取网页图片
在项目中经常会使用到WebView控件,当加载html页面时,会在/data/data/应用package目录下生成database与cache两个文件夹如下图如示:
请求的url记录是保存在webviewCache.db,而url的内容是保存在webviewCache文件夹下.
为了便于理解,接下来模拟一个案例,定义一个html文件,在里面显示一张图片,用WebView加载出来,然后再试着从缓存里把这张图片读取出来并显示。
第一步:新建一个Android工程命名为WebViewCache.目录结构如下:
第二步:在assets目录下新建一个html文件,命名为index.html
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&title&WebViewCacheDemo&/title&
&meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
&meta http-equiv="description" content="this is my page"&
&meta http-equiv="content-type" content="text/ charset=UTF-8"&
&img src="http://img04.taobaocdn.com/imgextra/i4//T2nGXBXXpaXXXXXXXX_!!.jpg_310x310.jpg"/&
第三步:修改main.xml布局文件,一个WebView控件一个Button(点击加载缓存图片用),代码如下:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"&
&WebView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/webView"/&
&Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="从缓存读取图片"
android:id="@+id/button"/&
&/LinearLayout&
第四步:修改主核心程序WebViewCacheDemo.java,这里我只加载了index.html文件,按钮事件暂时没写,代码如下:
package com.ljq.
import java.io.F
import java.io.FileInputS
import android.app.A
import android.app.D
import android.app.AlertDialog.B
import android.content.DialogI
import android.content.DialogInterface.OnClickL
import android.graphics.B
import android.graphics.BitmapF
import android.os.B
import android.view.V
import android.webkit.WebV
import android.widget.B
import android.widget.ImageV
public class WebViewActivity extends Activity {
private WebView webV
private static final String url="file:///android_asset/index.html";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView=(WebView)findViewById(R.id.webView);
webView.loadUrl(url);
第五步:在AndroidMainifest.xml文件中加访问网络的权限:
&uses-permission android:name="android.permission.INTERNET" /&
运行效果如下:
此时我们在WebViewCache.db里的cache.table里多了一条记录如下图所示:
在cache/webviewCache/目录下多了一个10d8d5cd文件,刚好和cache.table里的filepath,我们可以断定这个文件就是我们从网上拽下来的图片:
为了验证猜想,我给Button增加事件响应,就是弹出Dialog,里面加载缓存的图片,完整代码如下:
package com.ljq.
import java.io.F
import java.io.FileInputS
import android.app.A
import android.app.D
import android.app.AlertDialog.B
import android.content.DialogI
import android.content.DialogInterface.OnClickL
import android.graphics.B
import android.graphics.BitmapF
import android.os.B
import android.view.V
import android.webkit.WebV
import android.widget.B
import android.widget.ImageV
public class WebViewActivity extends Activity {
private WebView webV
private static final String url="file:///android_asset/index.html";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView=(WebView)findViewById(R.id.webView);
webView.loadUrl(url);
//点击按钮时弹出对话框
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ImageView imageView=new ImageView(WebViewActivity.this);
imageView.setImageBitmap(getPictureFromCache());
Builder builder=new android.app.AlertDialog.Builder(WebViewActivity.this);
//设置对话框的图标
builder.setTitle("从缓存查看图片");
builder.setView(imageView);
//退出按钮
builder.setPositiveButton("退
出", new OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
//关闭alert对话框架
dialog.cancel();
builder.create().show();
* 从缓存获取图片
private Bitmap getPictureFromCache(){
Bitmap bitmap=null;
//这里写死,在实际开发项目中要灵活使用
File file=new File(getCacheDir()+"/webviewCache/10d8d5cd");
FileInputStream inStream=new FileInputStream(file);
bitmap=BitmapFactory.decodeStream(inStream);
} catch (Exception e) {
e.printStackTrace();
第六步:再次运行工程,点击button按钮,效果如下图所示:
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!微信小程序开发核心之小程序点击事件_Hi小程序
微信小程序开发核心之小程序点击事件
|HiShop|阅读量:
导读:日,小程序点击事件已经是当下微信小程序开发最热门的话题,下面将从多方面来谈谈微信小程序开发核心之小程序点击事件相关的内容。...
Hi小程序小编了解到,微信小程序成为当下热门话题,下面从多个方面来谈谈微信小程序开发核心之小程序点击事件。
最新消息,
小程序点击事件已经是当下最热门的话题,下面将从多方面来谈谈微信小程序开发核心之小程序点击事件相关的内容。
网络请求相关
bug: http状态码不管是什么,一律被解析成200
要真正解决,只能等官方去fix这个bug了.
发出请求需要注意的几个细节
1.header要设置正确:(为什么header还要我们自己设?很傻逼)
get请求时为
header:{ & & & & & &&content-type&:'application/json'
post请求时为:
header:{ & & & &&content-type&:'application/x-www-form-urlencoded'
2.header不要写成head.(我之前就是这里写错了,还一直以为是微信的bug....)
3.content-type要小写.
4.参数的拼接
&get请求时:
参数要自己变成xx=yyy&hhh=uuu的形式,并自己加问号,拼接在路径后面,然后设置给url.不能直接将参数设置给data.微信是不会自动给你装拼的.
post请求时:分两种情况,
如果服务器api需要的是xx=yyy&hhh=uuu形式(key-value)的参数,那么需要自己拼装成这样的一个字符串,然后设置给data
如果服务器需要的是一个json,那么要将携带参数的对象的value进行urlencode后,将整个json设置给data.
参数的拼接:
公测开放后,强制要求请求全部为https
配置服务器的页面,https是写死的,不可更改
如果用了这个列表以外的域名,直接就被开发工具拦截,请求无法发出去,提示请求不在域名列表中。
解决办法:服务器相关api升级ssl
可以用这个免费的:Let's Encrypt
没有设置初始图的api,也没有图片缓存,于是,网络不好时,情况是这样的:
没有设置图片加载失败后统一的处理,必须每个image标签都写处理方式
下面两张图片加载失败,于是一片空白.充分感受到api设计人员的业余。
view标签不识别'/n'换行符,text组件可以.但是text组件会不响应margin和padding值.
dialog(modal)的content无法解析换行符:
对话框样式太少,可修改的样式太少
要弹出其他样式,自定义样式的,怎么办?自己写css吧.拿这个去改改:
& .dialogcover { & &position: & &font-family: Arial, Helvetica, sans- & &top: 0; & &left: 0; & &width: 100%; & &height: 100%; & &background: rgba(0,0,0,0.5); & &z-index: 9999;
& &} & &.dialogcover:target { & & & &opacity:1; & & & &pointer-events:
& &} & &.dialogcontainer { & & & &width: 80%; & & & &position: & & & &margin-left: 5%; & & & &margin-right: 5%; & & & &margin-top: 40%; & & & &padding: 5px 20px 13px 20 & & & &border-radius: 10 & & & &background: # & & & &z-index: 99999; & & & &opacity:1;
toast有成功和loading状态,竟然没有失败状态,are you OK?更奇葩的是,它的宽度居然是写死的,字一多就丑得要死
不管有没有,我们自己直接拿成功的toast包装好showFailToast()方法,,到处用着先。
最后如果官方真不提供,自己用css写一个!
点击事件被上层view消费,还会传递到下层
点击了去支付后,不仅会跳到支付页面,还会调用后面整个item的点击事件,跳到订单详情页
注: 评论区提出来了,这个是因为我用bindtap来响应事件时,事件还会一层层往下传,用catchtap就不会了。
事件分为冒泡事件和非冒泡事件:
1.冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递
2.非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。
3.bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。
navigateTo无法封装到另一个js方法中,只能直接写,而且失败还不走失败的回调
解决办法: 尽量用navigator标签吧.
block的item不能讲iteminfo整个obj传回来,只能传基本数据类型
通过scrollview来实现上拉加载更多,一直没有触发加载更多的事件
使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height。
如果scroll-view高度设置为100%,则不能触发上拉刷新和下拉加载事件......
wxml模板不生效
import 写法有坑:
1.模板文件名与文件内部的模板名必须一致,否则不生效.这是个大坑,我的之前不显示就是因为pagestate.wxml文件里模板名写成了name=&pageState&
2.路径(../)代表退出当前文件夹,退两次就到了根目录,然后进入到template/pagestate.wxml这个路径不必写在wxml的最上方,任何地方都可以写,最好就写在用之前的一行.方便到处拷贝.
3.模板中数据多时,引用时数据应该封装成data中一个字段,用...bean来拆解,自动分发.尤其是一个页面中多次引用这同一个模板时,只需要用bean1,bean2来区分即可,不需要改模板中的字段.所以,不要在模板文件中直接写死.
例子:模板文件pagestate.wxml:
&template name=&pagestate& &
& &&view class =&empty_view& wx:if=&{{!emptyHidden}}& & &
& & & &&view class=&center_wrapper& &
& & & & & &&view class=&center_child& &
& & & & & & & &&icon type=&info& size=&45&/&
& & & & & & & &&view class=&msg&& {{emptyMsg}}&/view&
& & & & & &&/view&
& & & &&/view&
& &&/view&
& &&view class =&error_view& wx:if=&{{!errorHidden}}& &&
& & & &&view class=&center_wrapper&&
& & & & & &&view class=&center_child& &
& & & & & & & &&icon type=&warn& size=&45& /&
& & & & & & & &&view class=&msg&& {{errorMsg}}&/view&
& & & & & & & &&button &class = &retrybtn& &type=&warn& &loading=&{{btnLoading}}&
& & & & & & & & & & & & disabled=&{{btnDisabled}}& catchtap=&onRetry& hover-class=&other-button-hover&& 点击重试 &/button&
& & & & & &&/view&
& & & &&/view&
& &&/view&
&/template&
例子:模板使用时的格式:
& &import src=&../../template/pagestate.wxml&/&
& &&view &
& & & &&template is=&pagestate& data=&{{...netStateBean}}&/&
& &&/view&
开发工具更新后
原先height:auto失效,必须指定image的高度为具体数值,不然高度为0.
tab切换时,注意wxml里和js里要用同一类型的值来判断当前,比如wxml里用string,那js里就不能用int
Data里,tabIndex的值只能取字符串(用单引号或双引号),不能取int.
iphone6上video标签适配问题
设置fixed固定布局后仍然会随着下方内容一起向上滚动:
Android基本上没问题,因为Android 微信会让你下载QQ浏览器X5内核,这个内核是基于Chrome内核,与小程序开发工具编译运行内核一致,基本没问题。好像是Android2.1系统以上就替换成该内核了。iOS则使用WKWebView内核,存在兼容性问题。官方给的调兼容性地址是http://res.imtt.qq.com/tbs/incoming/home.html 和http://kangax.github.io/compat-table/es6/
有同学贴上了他的适配代码:
想了解更多微信小程序开发和微信小程序大全都可以进入了解。
  现在很多的4s店老老板都开始通过互联网宣传自己的店铺,尤其是在移动互联网
猜你喜欢的内容
类微信小程序开发开发文档
类微信小程序开发小程序开发实例
小程序产品推荐
移动云商城
一款会赚钱的网上商城系统——移动云商城,让零售企业转型电商更简单!独创6合一全网营销模式、裂变式推广分佣快速吸粉引流,不论微信、APP、手机触屏还是PC端网上购物商城,只要1个后台即可掌控全网最火爆的6大商城!
小程序基础入门
热门小程序
读过此文的人还读过
官方微信>>>}

我要回帖

更多关于 js图片缓存加载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信