天天看点

前端常见兼容问题系列6: 一些安卓APP的WebView中<input type="file">不工作

有一次想做一个html5的图片上传功能,主要是依赖<code>&lt;input type="file"&gt;</code>来选择本地的图片。开始一切都很顺利,在浏览器中,在淘宝等容器中,都能如预期进行文件选择和上传。在ios系统下的app中也都工作正常,但是在一个安卓app中,无论怎么尝试选择文件,都始终出不来。

我给input的onchange事件打了个<code>alert()</code>,点击时也没有任何反应。看来是<code>&lt;input type="file"&gt;</code>在这个容器中根本就不工作。

经过一番检索,发现这其实是个非常老的问题了(惭愧)。是安卓app的webview默认屏蔽了该控件的使用,有些安卓app之所以能支持文件选择和上传,主要可能是有可能采取了如下措施之一:

(2)提供了js bridge来供web页面调用

所以,单从前端技术上是解决不了这个问题的。

这个问题之所以不太好排查,一方面跟手机端的图片上传功能我不太常用到有很大关系,另一方面也因为见到一些其它的app容器能支持该功能,所以思维在习惯上已经形成定势,误以为这是webview默认就支持的。

末了,顺便提醒一句,下次进行类似功能的需求评审,别忘了先了解下相应的app容器是否支持该功能,如果没有,则需要找到相应的客户端开发同学评估一下工时,以免造成影响项目进度的风险哟!

继续阅读