【发布时间】:2012-12-10 06:46:45
【问题描述】:
我编写了一个相当基本的 js 函数,它以编程方式自动在每个输入字段下方完美对齐 iPhone 键盘,获得焦点(如果您喜欢,请随意使用它!)。对齐主要由 window.scroll 处理 - 一种适用于任何浏览器视图的标准方法,UIWebView 除外,因此 phonegap/cordova (2.1)。 所以我需要一个解决方法。
我的工作代码:
function setKeyboardPos(tarId) {
//programmatically: set scroll pos so keyboard aligns perfectly underneath textfield
var elVerticalDistance = $("#"+tarId).offset()["top"]; //i.e. 287
var keyboardHeight = 158;
var heightOfView = document.height; // i.e. 444
var inputHeight = $("#"+tarId).outerHeight();
var viewPortSpace = heightOfView-keyboardHeight; //i.e. 180
var verticalNewSroll = (elVerticalDistance+inputHeight)-viewPortSpace;
if(verticalNewSroll<0) { verticalNewSroll = 0; }
////
//OK, all done lets go ahead with some actions
$("#footer").hide(); //hide footer so that the keyboard doesn't push it on top of textfield
$("#containingDiv").css("bottom","0px"); //remove bottom space for footer
window.scrollTo(0,verticalNewSroll); //scroll! where the problem starts
}
除了 UIWebView 之外的所有东西都可以工作。 正如我上面提到的,除了 window.scrollTo 之外的所有东西都可以工作(注意,为了清晰起见,做了一些小的改动)。那么有人知道替代解决方案甚至是好的解决方法吗?
类似问题
window.scrollTo doesn't work in phonegap for IOS
PhoneGap / Cordova scrollTo Ignored
How to add vertical scroll in Phonegap
以上还有三个类似的问题,它们在某种程度上指出了一个正确的方向。其中一位回答者提到使用 css 来完成此操作。谁能想出一个更具体的例子? 另一个人建议使用锚点,但这不是一个非常漂亮的解决方案,并且与我的其余代码配合得不是很好。
【问题讨论】:
标签: javascript jquery css cordova