編集: ここでバグを示すビデオを YouTube にアップロードしました: http://www.youtube.com/watch?v=zkDYlgtX5Hk
Android 4.03 ICS を実行している Samsung Galaxy S2 で新しい Web アプリケーションをテストしているときに、非常に奇妙なバグが見つかりました。
デフォルトの Web ブラウザーでフォームを読み込んでからページを下にスクロールすると、フォーム要素自体が上にスクロールしたにもかかわらず、ヒットボックス/タッチ可能領域が、ページが最初に読み込まれたときの画面上の位置にとどまっているように見えます。画面。
私が利用できるいくつかのテストデバイスでわかる限り、同じバージョンの Android を使用して Android シミュレーターで試してみたところ、問題を再現できなかったため、これは Samsung Galaxy S2 でのみ発生すると思います。これにより、問題のある非常に特定のユーザーベースになることはわかっていますが、最後にGalaxy s2が私の国(オーストラリア)で最も人気のあるAndroidハンドセットであることを確認したので、修正を見つけることができれば幸いです.
http://users.tpg.com.au/geoffica/test.htmlでこれを実証するための非常に簡単なページを作成しました。
次の手順を実行して、問題を再現できます。
- Galaxy S2 でページを読み込む
- ページが画面いっぱいに表示され、アドレス バーが画面のすぐ上に来るようにブラウザをスクロールします。
- 選択ボックスがある場所で、選択リストがあった場所のマーカーとして画面の横に指を置きます。
- ページを少し下にスクロールし (選択リストを画面に表示したまま)、選択リストがあった場所の空白をタッチすると、オプションが画面に表示されます。それを取得するには数回の試行が必要になる場合がありますが、それは実現します。
これを再現するのは非常に難しく、発生する可能性は低いと考えていることはわかっていますが、クライアント用に作成したフォームでは、要素が配置された場所のために、ヒットボックスが常にフォームの送信ボタンに重なって、送信ボタンを押すのが非常に難しい。ヒットボックスが重なっている場合、選択リストは他の選択リストからタッチを盗み、タッチすると間違ったオプションが表示されます。
多くのことを試しましたが、これまでに見つけた唯一の回避策は、クリック イベントの代わりに touchstart イベントを使用して送信ボタンをトリガーすることです。これは、選択リストのクリック イベントの前に発生するようで、最初に入るのを防ぎますが、これは理想とはほど遠いものであり、選択リストがページ上の他の要素からクリックを盗むのを止めません。
また、選択リストを画面外に配置し、リンクなどに触れることでクリックイベントをトリガーするために、独自の jquery プラグインを展開することも考えました。モバイル デバイスの場合、選択リストの位置に関係なく、オプションが画面に表示されます。ただし、これは非常に面倒であり、代わりにドロップダウン リストにオプションを表示するなど、PC や iPad からアクセスするユーザーに与える影響を考慮に入れる必要があります。私にはかなり問題があるように聞こえます。Galaxy s2 固有のブラウザー/デバイス スニッフィングが必要になる場合もあります。
選択リストを使用しないこと以外に、これに対する実際の回避策はありますか?