OpenSiv3D Web 版の Platform::Web::Dialog::OpenFile()
について、
以下の操作をしたときに戻り値の AsyncTask
の isReady()
が true
にならない現象を解消する。
- 連続で同じファイルを選ぶ
- 連続で(またはファイルが選択されていない状態で)ダイアログをキャンセルする
本 Gist のとおり Siv3D.js
を修正し、https://gist.github.com/voidproc/7673170c54448179703ce08e0800a3b4 で動作確認する。
input
イベントと同様にイベントハンドラを oncancel
に設定する方法では Firefox で動作せず。
addEventListener
を使用する方法では Firefox でも動作するが、
OpenFile()
が呼ばれるたびにハンドラが登録されてしまうため、once
オプションを指定 & input
イベント実行時にハンドラを削除する。
- ✅ Chrome 116.0.5845.111
- ✅ Opera One 101.0.4843.58
- ✅ Firefox 116.0.3
- ✅ Edge 116.0.1938.54
- ✅ Chrome (Android) 116.0.5845.92
- ❌ Opera (Android) 76.2.4027.73374
- ※最初のグレーの画面から進まない?
- ✅ Firefox (Android) 116.3.0
- ✅ Edge (Android) 116.0.1938.58