【发布时间】:2012-10-04 11:54:39
【问题描述】:
我遇到了一个不寻常的问题,我正在寻找建议。基本上,我正在使用:
- 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() 事件中添加了一个“调试器”语句,并尝试单步执行代码。我希望被引导到其他一些旨在调整页面大小的调整大小侦听器。如果我能找到它,那么当有人选择表单元素时,我可以暂时削弱它,然后重新启用调整模糊或方向变化的大小。问题是,我单步执行了每一行代码,调试过程在调整大小发生之前就停止了。
这让我想知道除了 window.resize 是否还有其他事件被触发。所以我在下面添加了两行:
document.addEventListener("throttledresize", function() { alert("throttledresize fired.") }, false);
document.addEventListener("orientationchange", function() { alert("orientationchange fired.") }, false);
然而,两人都没有开火。所以我有点卡住了。我有一种很好的感觉,我知道问题出在哪里,但我无法追查到根源。关于在哪里可以找到这个在 window.resize() 上调整页面大小的神秘代码有什么建议吗?
【问题讨论】:
-
我真希望我能给你一个答案 mang
-
您确定是 JQM 而不是 Cordova?我确定我记得我最近读过一些关于 Cordova 的文章(如果我现在能找到的话,那该死的),由于出现软键盘而调整窗口大小并确保它不是方向改变.....
-
我很确定它是 JQM,因为它只影响页面Cordova 没有任何特定于 UI 的智能。我认为它在 JQM 中绊倒了一些东西,这让 JQM 认为“嘿,现在页面变小了,我最好调整画布的大小”,即使它不应该这样做。此外,如果我将其纯粹作为禁用 Cordova 的 iPhone Web 应用程序运行,也会发生这种情况。顺便说一句,您可能指的是stackoverflow.com/questions/6731517/…。如果是这样,不幸的是这不是这里的问题。有趣的是,我刚刚创建了一个存在这个问题的页面 - 当键盘出现时,输入框会滚出屏幕,因此您看不到正在输入的内容。看看我能找到什么。
标签: jquery cordova jquery-mobile event-handling