当选择超过3M的大图的时候,有时会出现Uncaught RangeError: Maximum call stack size exceeded.程序卡死,最后导致疯狂耗电到手机关机。为了方便代码不乱,也顺便截了张图。
function pickImage() {
var width = document.querySelector('.img-all').offsetWidth + 'px';
var $ul = document.querySelector('#photo-list');
var $add_btn = document.getElementById("add-btn");
// 从相册中选择图片
plus.gallery.pick(function(e) {
if(e.files.length <= 0) return false;
for(var i = 0; i < e.files.length; i++) {
//去重复,并且保证只有6张图片
var path = e.files[i];
if(images.indexOf(path) === -1 && images.length < 6) {
images.push(path);
var liTag = document.createElement('li');
liTag.className = 'img-all';
liTag.setAttribute('style', 'background: url(' + path + ') center/cover no-repeat;width:' + width + ';height:' + width);
var iTag = document.createElement('i');
iTag.setAttribute("id", path);
iTag.className = 'img-item-del';
liTag.appendChild(iTag);
$ul.insertBefore(liTag, $add_btn);
}
}
if(images.length >= 6) {
$add_btn.style.display = 'none';
}
},
function(e) {}, {
filter: 'image',
multiple: true,
system: false
});
}
c***@sina.com (作者)
我知道是死循环或者递归,关键是找不出问题所在啊
2017-12-18 16:47
回梦無痕
回复 c***@sina.com:你把你代码里的循环改一下
for(var i in e.files){
var path = e.files[i]
}
2017-12-18 16:50