異常な問題が発生しており、提案を探しています。基本的に、私は使用しています:
- JQuery Mobile 1.1
- JQuery 8.2
- PhoneGap(Cordova)2.1
iPhoneのアプリの多くのページで、カーソルを入力ボックスに置くと、仮想キーボードが開きます。それは問題なく、期待されています。
問題は次のとおりです。場合によっては(すべてではありません)、カーソルを入力ボックスに置くと、window.resizeイベントが発生します。以下のコードでこれを確認しました:
$(window).resize(function(e) {
alert('The window resize occurred! Width: ' + $(window).width() + " Height: " + $(window).height());
debugger;
return false;
});
window.resizeイベントを解決した直後に、JQueryMobileはページのサイズを誤った高さに変更することを決定します。何が何であるかを確認するために各要素に異なる色の境界線を追加したので、それがページであることがわかります。また、多くの場合、このサイズ変更アクションにより、GUIの半分がdivの下にオーバーフローし、カーソルがdivの下に隠れて表示されることもあります。
それを理解する最良の方法は、スクリーンショットを使用することです。
さて、私は誰もがこれに対する正確な答えを持っているとは本当に期待していません。デバッグのヒントを探しています。window.resize()イベントに「debugger」ステートメントを追加し、コードをステップ実行しようとしました。ページのサイズを変更するように設計された他のサイズ変更リスナーにつながることを望んでいました。それが見つかった場合は、誰かがフォーム要素を選択したときに一時的にそれを無効にしてから、ぼかしや向きの変更時にサイズ変更を再度有効にすることができます。問題は、コードのすべての行をステップスルーすると、サイズ変更が発生する直前にデバッグプロセスが停止することです。
これは、window.resize以外に他のイベントが発生しているのではないかと思います。そこで、以下の2行を追加しました。
document.addEventListener("throttledresize", function() { alert("throttledresize fired.") }, false);
document.addEventListener("orientationchange", function() { alert("orientationchange fired.") }, false);
しかし、どちらも解雇されませんでした。だから私はやや立ち往生しています。問題が何であるかはわかっているとは思いますが、原因を突き止めることはできません。window.resize()でページのサイズを変更するこの不思議なコードをどこで見つけることができるかについての提案はありますか?