Closed fengzou1994 closed 6 years ago
按照你的方式,重现了这个问题,发现问题出在这里:
在添加下面代码后:
Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
拖动手指时,打印 touchstart
的事件对象 e
,发现触点 e.touches
数组中包含了多个function,如图:
进一步的,为了排除是 we-cropper对这个触点对象操作造成的,直接移除 we-cropper,在 page 中添加上述代码,如下:
/**
* Created by sail on 2017/6/1.
*/
import WeCropper from '../we-cropper/we-cropper.js'
const device = wx.getSystemInfoSync()
const width = device.windowWidth
const height = device.windowHeight - 50
Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
Page({
data: {
cropperOpt: {
id: 'cropper',
width,
height,
scale: 2.5,
zoom: 8,
cut: {
x: (width - 300) / 2,
y: (height - 300) / 2,
width: 300,
height: 300
}
}
},
touchStart (e) {
console.log(e)
// this.wecropper.touchStart(e)
},
touchMove (e) {
// this.wecropper.touchMove(e)
},
touchEnd (e) {
// this.wecropper.touchEnd(e)
},
onLoad (option) {
}
})
发现输出 e.touches
中仍会包含 function
失效并非 we-cropper 本身引起,而是这段代码的引入改变了小程序原生触摸对象,但原因未知,可能是小程序的内部机制引起的(猜测)
避免在原生 Array prototype 对象上添加方法,若实在要用该方法,可以另写一个
对传入 we-cropper
中的触摸对象进行过滤,具体实现方式可以参考 #41
we-cropper 版本
1.2.0
对应工具或者iOS或者Andriod的版本号
ios10.3.3
微信版本号
6.7.1
重现步骤
`/**
期待的行为
实际的行为
当我的小程序的公用js库中存在对数组原型操作,裁剪功能在小程序上不能正常使用;
(ps:调试工具中没问题,在真机上就会出现,现象为:
移动图片位置,图片就消失了,页面也无任何报错
);