我遇到了一个不寻常的问题,我正在寻找建议。基本上,我正在使用:
- jQuery Mobile 1.1
- jQuery 8.2
- PhoneGap (科尔多瓦) 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() 事件中添加了一个“调试器”语句,并尝试单步执行代码。我希望被引导到其他一些旨在调整页面大小的调整大小侦听器。如果我能找到它,那么当有人选择表单元素时,我可以暂时削弱它,然后重新启用模糊或方向更改的大小调整。问题是,我单步执行了每一行代码,并且在调整大小发生之前调试过程停止了。
这让我想知道除了 window.resize 是否还有其他事件被触发。所以我在下面添加了两行:
document.addEventListener("throttledresize", function() { alert("throttledresize fired.") }, false);
document.addEventListener("orientationchange", function() { alert("orientationchange fired.") }, false);
然而,两人都没有被解雇。所以我有点卡住了。我有一种很好的感觉,我知道问题出在哪里,但我无法追查到根源。关于在哪里可以找到这个在 window.resize() 上调整页面大小的神秘代码的任何建议?