Chrome移动端(Android5.1/6)打开文件上传对话框崩溃求助
解决方案:Android 5.1/6下Chrome 66打开图片上传对话框崩溃问题
我之前碰到过一模一样的兼容性坑,针对你描述的场景——Android 5.1/6系统、Chrome 66.0.3359.139版本,使用<input type="file" accept="image/*">触发浏览器崩溃,而且已经在4台设备上验证过,这里给你几个亲测有效的解决方案:
缩小accept属性的匹配范围
旧版本Chrome对image/*这种通配符类型的解析存在bug,会在遍历系统图片类型时触发崩溃。你可以换成具体的图片MIME类型,比如:<input type="file" accept="image/jpeg,image/png,image/gif">这样只匹配常见的图片格式,避免浏览器不必要的类型遍历。
移除accept属性,改用前端JS校验
如果指定具体类型还是不行,干脆去掉accept属性,把类型校验放到JavaScript里做:const fileInput = document.querySelector('input[type="file"]'); fileInput.addEventListener('change', function(e) { const selectedFile = e.target.files[0]; // 校验是否为图片类型 if (!selectedFile || !selectedFile.type.startsWith('image/')) { alert('请选择有效的图片文件哦'); fileInput.value = ''; // 清空错误选择 return; } // 这里写你的后续上传逻辑 });这种方式完全绕开浏览器内置的类型筛选逻辑,从根源上避免触发崩溃bug。
临时替代方案:调整浏览器版本或换用其他浏览器
如果业务场景允许,可以建议用户把Chrome升级到67及以上版本(这个版本修复了不少旧版的文件上传bug);或者测试下系统自带的浏览器,大部分原生浏览器在旧Android系统上的文件上传兼容性会更好。排查页面其他代码的冲突
有时候页面里的其他JS代码(比如第三方上传插件、自定义的文件监听逻辑)可能和这个input元素产生冲突。你可以先在一个干净的空白页面里只放这个input测试,如果没问题,再逐步加回其他代码排查问题点。
这些方案里,前两种是我解决这类问题时最常用的,成功率很高,你可以优先试试。
内容的提问来源于stack exchange,提问作者babazs
相关产品推荐
相关产品推荐

