android - Android 浏览器中的文本区域被键盘隐藏

标签 android html css cross-browser

在 iOS 中,即使对于包含在具有 position: fixed 的 div 中的文本区域,当文本区域具有焦点时,操作系统会确保它可见(这有时意味着向上滑动整个浏览器窗口)所以文本区域未被键盘隐藏。

在 Android 浏览器中(我测试了 2.3 和 4.0 中的普通浏览器以及 4.0 中的 Chrome),这不会发生。文本区域被键盘覆盖,用户看不到她正在输入的内容。

作为仅适用于 Android 的临时解决方法,我在 textarea:focus 上设置了 position: fixed 并将其移动到屏幕顶部,以确保它可见.

是否有更优雅的解决方案来保持我的布局的完整性?

我在 jsfiddle 中做了一个小例子。在 Android 浏览器中查看以了解我的意思:http://fiddle.jshell.net/5cvj5/show/light/

最佳答案

我最终做的,以及我发现 Facebook 为克服同样的挑战所做的,是在 textarea 获得焦点时在其下方添加一个间隔 block 元素,然后滚动到 View 底部,如下所示:

var android_spacer = $('<div/>', {
    'class' : 'android_spacer'
}).css({
    'width'  : '100%',
    'height' :  '200px'
}).appendTo($('#parent_view'));

$('#the_textarea').on('focus', function() {
    $(this).after(android_spacer);
});

$('#the_textarea').on('blur', function() {
    $('.android_spacer').remove();
});

请注意,屏幕上一次只能显示一个间隔符。

关于android - Android 浏览器中的文本区域被键盘隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13205273/

相关文章:

javascript - 如何将元素的颜色从一种颜色动画化为另一种颜色?

android - 在 Android Facebook SDK 中更改对话框大小

java - 删除 Firebase 数据库 Android 上随机生成的子项

html - html5音频进度条/tribbles的问题

php - 为什么 Chrome 中的 HTML 列表中有如此多的垂直偏移 - 来自 PHP 或样式的空白?

javascript - 无法使用 Javascript 将 jQuery 类应用于 HTML DIV

android - Admob 横幅不在屏幕底部

php - Recyclerview MySql int 显示 0

jquery - 使用 jQuery 获取位置 :absolute content is running twice, 的高度第二次返回不正确的值

css - 列表元素内 float 元素的技巧