问题现象
项目中遇到一个上传图片的功能,使用了file作为选择上传,需要做图片预览等功能。在多方测试后没有问题,但在安卓微信浏览器中却发现change事件失效无法触发。
解决办法
由于在项目中我是用来上传图片,所以用了accept进行图片的类型限制,如下:
<input required="required" type="file" accept="image/png,image/jpeg,image/bmp" name="report" />
这样会使change事件失效,需要改为:
<input required="required" type="file" accept="image/*" name="report" />
如果需要图片类型验证,则在change事件中对file.type进行正则匹配,方法如下:
function checkImgType(file) {try {if (!(/image\/(jpeg|png|jpg|bmp)/.test(file.type))) {alert("请上传正确的图片类型");return false;}else {return true;}}catch(e) {return false;}}
原因
猜测是安卓微信浏览器不支持accept属性进行列举匹配。如果有大佬知道具体原因可评论拍砖扔鞋子。感谢阅读!