天天看點

前端常見相容問題系列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容器是否支援該功能,如果沒有,則需要找到相應的用戶端開發同學評估一下工時,以免造成影響項目進度的風險喲!

繼續閱讀