Androidデフォルトブラウザで隠れたinput type="file"のダイアログを出す方法

久々に書くけどちょっと真面目にこれはハマったんでメモ

ファイルとかアップロードに使うinput type="file"だけど、
ぶっちゃけデザインがダサいので裏側に隠していい感じの画像をクリックするとダイアログが開いて選択できるといいとおもったんでやってみた。下記のやつを参照してみた。
input:file 要素を表示しないで、ファイルをアップロード

PCやiPhoneだとうまくいったんだけどAndroidのデフォルトブラウザでやってみたらダイアログが開かれない。なぜだ…

alertデバッギングをしてみるとclickイベント自体はちゃんと動いているっぽい

いろいろ悩んでいたところjsdo.itにいい感じのテスト用のやつがあったんでここでいろいろ試してみた。
input type="file"のダイアログを、JavaScriptから開けるかのテスト

検証した結果、表示されてない(style="display:none")や画面外に飛ばしてる(絶対座標で-指定)場合はファイルダイアログが開かないことが発覚(jQueryのtrigger使わないとダメかと思っていたけどそんなことはなかった)。

opacity:0でやってみるかと思ったけど表示されるであろう場所は空白で表示されるわ、そこをタップしたらダイアログ開かれるわで、あんまりよろしくないのでどうしたもんかと悩んでいた。そしてukayareに電流走る。

「ん?表示されてればいいんなら、クリックイベント発火させる直前に一時的に出して、発火後にすぐに隠せばいいんじゃね?」と思いついた。

実際やってみたらちゃんと動いた。

ググって探しても見つかんなかったんだけど結構やってる人いそうなんだけどなあ。ググり方が悪いのか

追記
IEでやったら動かんです。