location.hashはandroidのchromeだとフリーズするかもしれない
とあるwebアプリを作っていたのですが、検索結果を表示したあとにその表示部分にページ内遷移させるとフリーズしてしまいました。
現状の対処法を残しておきます。
問題の環境
機器 | Zenfone 5 |
Androidバージョン | 9 |
ブラウザ | Chrome(73.0.3683.90) |
Android7.1.1のxperiaで同じバージョンのchromeでは再現できなかったので、chromeというよりもAndroidのバージョンの問題なのかもしれません。
背景
入力した地名の読みがなを表示してくれるwebアプリを作りました。
このwebアプリで実際に地名を入力すると以下のように表示されます。
この場合は候補が少ないので特に問題ないのですが、候補が増えると画面をスクロールする手間が増えてしまいます。
そこで、検索後に検索結果表示欄に自動で移動させることにしました。
実装方法
とりあえずアンカーを使えばいいでしょう。
検索結果を表示したあとに移動させたいので、javascriptで実装してみます。
やること自体はかなり単純で、検索結果を表示する部分の直後に以下の一文を加えるだけです。
window.location.hash = "result";
これだけで理想通りの動きをするようになります。
原因?
とりあえず各ブラウザのlocationの対応状況を確認してみました。
https://developer.mozilla.org/ja/docs/Web/API/Location
Android版ChromeのLocationのところが?になっていますね。
なんだかこれが原因なような気がします。
それ以外の部分は対応しているので何とも言えない部分はありますが...
色々試してみたところ、hashやprefなど、データを取得することはchromeでも問題なくできるようでした。
しかし、hashなどを使って移動させようとなると話は違うようです。
移動せずにフリーズするならまだ分かるのですが、なぜか移動したあとにフリーズします。