问题:
当小程序图片页面反复跳转时,或者微信打开小程序页面之后,处于后台运行。
图片加载不出来,我图片加载是通过bindload事件不判断是否下载完成再显示。但是现在bindload不触发,一直显示加载层。
分析:
其原因就在于,小程序的优化机制,多次加载同一张图片,往往会从缓存中读取,而不是从网络下载,这就导致 bindload 事件不会触发了。
解决:
前端加载图片url的时候,在后面加一串随机数,这样小程序每次都会认为是新图片,不会从缓存中读取了。这个方法简单,就是会浪费一些性能和流量。
.wxml
<view class="item-left">
<image src="/images/mall/loading.gif" class="loading-img" hidden="{{imgShow}}"></image>
<image fade-in mode="aspectFill" show-menu-by-longpress src="{{imgsrc}}" class="product-img br16"
hidden="{{!imgShow}}" lazy-load data-imgsrc="{{imgsrc}}"
data-index="{{itemIndex}}" bindload="handlePictureLoadEvent"></image>
</view>
.js
imgsrc =`${imgsrc}?t=${Math.random()}`//防止触发图片load事件失败