レスポンシブウェブデザイン用のJavascript/JQueryプラグインを開発しています。ビューポートの変更、特にサイズ変更と向きを監視する機能があります。変更が検出されると、対応するコールバック関数が呼び出されます。
ただし、Android(特に、Google Galaxy Nexusのストックブラウザを使用)で、ユーザーがソフトキーボードを使用しようとすると、ビューポートのサイズが変更され、コールバック関数が起動することに気付きました。 。これは私が排除したい動作です。
Javascriptを介して、この動作を無効にするか、検出して、コードベースに変更を加えて対応できるようにする方法はありますか?!
私がこれまで見てきた解決策は、主にAndroidアプリ開発であり、私の場合に当てはまるかどうかはわかりません。
ありがとう。
さて、いじくり回した後、私は自分の問題の解決策を見つけました。
では、ソフトキーボードが表示/非表示になるとどうなりますか?!私のテストでは、viewport width
は一定のままです。ただし、ソフトキーボードがviewport height
(縦向き)および((current - previous)/previous)*100
(横向き)で表示されると、43%
はサイズ[58%
]を変更します。ソフトキーボードがそれぞれ73%
(縦向き)と139%
(横向き)で非表示になっている場合。
したがって、次の条件がすべて当てはまる場合は、コールバック関数を無効にしました。
モバイルデバイスのブラウザにはデスクトップのようなサイズ変更ハンドルがないため、ユーザーが上記の条件を自然に模倣する状況が発生するとは思われません。
ここでコードのサンプルを見ることができます: https://github.com/obihill/restive.js/blob/f051fe6611e0d977e1c24c721e5ad5cb61b72c1c/src/restive.js#L4419 。残念ながら、これはより大きなコードセットの一部ですが、条件に基づいて基本的な考え方を収集できるはずです。
乾杯。
私も同様の問題を抱えていました。そして、私の解決策は、Android:Pで最も期待しないときにトリガーされるサイズ変更イベントの代わりに方向変更イベントを使用することでした
$(window).bind( 'orientationchange', function(e){ // Type pretty code here });
ソース: http://www.andreasnorman.com/dealing-androids-constant-browser-resizing/
私のpretty code
とあなたを共有することができます。 resize
イベントにトリガーを設定し、サイズ変更イベントの前と比較して高さをカウントしていました。
originalHeight * 100 / currentHeight
高さコンテナを変更できる割合を示します
ここでコードのサンプルを見ることができます https://jsfiddle.net/ocg9Lus7/
更新19.11.2018
オンロードウィンドウの後で、値を動的(100%、vhなど)から静的な値に変更することをお勧めします。より動的なコンテナが必要な場合は、関数をresize
イベント(originalHeight * 100 / currentHeight
)にバインドすることでサイズを再計算できます。
ここでコードのサンプルを見ることができます: https://jsfiddle.net/gbmo6uLp/