Android 键盘打开时防止文档重排/浏览器调整大小

2024-02-10

这是针对 HTML5/Javascript Web 应用程序,而不是本机 Android 应用程序。

当 android 软键盘打开时,如何防止浏览器/DOM 调整我的内容大小(响应式,主要是 vw/vh 大小等)? 发生的情况是,一旦打开键盘(例如在输入字段上),内容(尤其是字体大小)就会发生变化。

我已经设置了

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">

我想要实现的是,键盘充当覆盖层,并且下面的内容变得可滚动。所以基本上,什么android:windowSoftInputMode会在 android 清单中执行。

当调整大小量在一定范围内时,我还尝试监听窗口调整大小事件并阻止它(请参阅这个答案 https://stackoverflow.com/a/17201044/5307891到另一个问题)。但这里发生的情况是键盘打开,然后立即再次关闭。 (*)

所以我的基本想法是:

  • 阻止浏览器计算新尺寸(就好像没有发生调整大小一样)
  • 将键盘设置为覆盖层,而不是调整窗口大小的单个元素
  • 在我已经测试过的阻止调整大小方法中保持键盘打开(*)

但我无法找出其中任何一个的有效解决方案。


好的,这是针对 html5(浏览器)应用程序的修复。

var isKeyboardOpen = false;

// Override onresize event if you have it already just insert code 
// also you can check id of element or any other parameters
if (document.activeElement.tagName == "INPUT" ||
    document.activeElement.tagName == "input") {

    // regular onresize
}
else {
    // avoid resize
}

// To check is it keyboard open use this code 

window.addEventListener('native.showkeyboard', keyboardShowHandler);

window.addEventListener('native.hidekeyboard', keyboardHideHandler);

function keyboardShowHandler(e){
    isKeyboardOpen = true; //always know status
}

function keyboardHideHandler(e){
    isKeyboardOpen = false;
}

最初尝试通过设置标志来阻止:

var object_ = document.getElementById("IwillOpenKeyboardOnMobile");
object_.addEventListener("focus", ONFOCUSELEMENT);

function ONFOCUSELEMENT() {
    isKeyboardOpen = true; 
}

// opposite event is blur
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 键盘打开时防止文档重排/浏览器调整大小 的相关文章

  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • Android 从命令行停止模拟器

    这个问题与如何通过命令行关闭Android模拟器 https stackoverflow com questions 5912403 how to shut down android emulator via cmd 但是 在尝试第一个答案
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • 在为 Android 实现 Google 登录时,任务“:app:transformClassesWithDexForDebug”执行失败

    我正在尝试为 Android 实现 Google 登录 并且我正在按照以下说明进行操作 https developers google com identity sign in android start integrating https
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • JSTL 在循环中每 5 个字段集创建一个新行

    您好 我目前正在迭代并在表中显示字段集列表 为了让布局变得更得体一些 我想在每次循环到达第五个字段集时创建一个新行 谢谢 JSP div class det table class det tr td td tr table div
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 三级十进制有序列表 CSS

    我有一个 html 中的三级有序列表 我想为其提供如下样式 1 Item 1 1 1 Item 2 1 1 1 Item 3 下一个 plunker 中有一个 html 示例 http plnkr co edit DqhZ5pJILTUHG
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012

随机推荐

  • 没有元素的 xs:mixed 是什么意思?

    我从一位客户那里得到了以下 XSD 位 它是跨越数十个文件的遗留架构的一部分
  • x86-64 指令集、AT&T 语法、lea 和括号的混淆

    有人告诉我 lea rax rdx 是无效语法 因为源代码需要放在括号中 即 lea rax rdx 我想我显然误解了 lea 和括号的目的 我以为 lea rax rdx 会将 rax 中存储的内存地址移动到 rdx 但显然这就是 lea
  • 数据框中未定义所选列时出错

    我一直在做一项作业 我必须从 specdata 目录中读取一些 csv 文件 这些文件非常相似 有 332 个标题为 001 csv 332 csv 如果重要的话 它们具有一致的列和标题 我相信我已经很接近了 但我被上面的错误消息绊倒了 错
  • 连接稀疏矩阵特征值

    我在特征中有两个稀疏矩阵 我想将它们垂直连接成一个 例如 代码的目标是 SparseMatrix
  • events.js:183 抛出错误; // 未处理的“错误”事件

    我通过命令创建了一个新的 React 项目npx create react app agent mo项目 它已被创建 但在启动时npm start我收到以下错误 运行以下命令以避免 ENOSPC echo fs inotify max us
  • 减慢 for 循环以使 Canvas 动画化

    我正在尝试使用画布制作一些东西 我可以在其中传递一个数字 该数字等于0 360的某个度数 并且一条线将从其当前位置到我设置的度数进行动画处理 现在我已经将线路转到了我想要的任何程度 我还没有完成我传递程度的功能部分 现在只是在 for 循环
  • 我们如何在 Python 中获得可选的类属性?

    对于字典我们可以使用 get方法 类的属性并提供默认值怎么样 您可以使用hasattr http docs python org 2 library functions html hasattr and getattr http docs
  • 在 C# 中使用 XmlSerializer.Deserialize() 反序列化父级命名空间之外的子节点

    我有一个应用程序 它使用命名空间来帮助反序列化存储在 XML 中的对象 XML 命名空间也是对象所在的 C 命名空间 例如 给定以下 XML 片段
  • Android 布局文件夹组织

    我正在开发一个 Android 应用程序 目前我有大约 8 个布局 xml 文件layout文件夹 随着每个附加布局资源文件的增加 组织此文件夹的需求也在增加 但是 当我在布局文件夹内创建一个文件夹并通过重构操作将资源移动到该文件夹 时 它
  • sqlalchemy 动态惰性关系的条件多重过滤器

    我正在将 sqlalchemy 与以下模型一起使用 class Page db Model id posts db relationship Post lazy dynamic class Post db Model id page id
  • 为什么在 scala 中创建 List 时需要 Nil ? [复制]

    这个问题在这里已经有答案了 我在清单上有一个基本问题 当我尝试使用 cons 运算符创建列表时 出现以下错误 scala gt val someList 1 2
  • 如何在 Windows 上发送自定义 tcp 数据包?

    我想发送一个数据包 我定义了IP地址 端口 数据等 起初我想也许我可以在Windows上使用原始套接字 但在谷歌搜索一段时间后 我发现MS似乎禁用了原始套接字从XP SP2 是真的吗 现在我不知道该怎么办 有人告诉我用winPcap 然后我
  • IntelliJ Idea 调试/运行控制台; System.out.flush 不刷新

    这几天一直困扰着我 因为它曾经有效 我升级了我的intellij 现在它不起作用了 我不想回去 但我需要一个答案 因此 我正在编写一个控制台应用程序 当它运行时 我希望有一个 shell 来显示进度 它在运行时工作正常 但是当我在 Inte
  • 如何检查 Android 手机是否正在充电

    我正在写一个安卓应用程序 我想知道如何在应用程序启动时检查手机是否正在充电 我读过这个如何知道手机是否正在充电 https stackoverflow com questions 6243452 how to know if the pho
  • IntelliJ:禁用单个模块的警告/错误

    我最近迁移到 IntelliJ 需要解决一个特定问题 我有一个包含许多模块的项目 其中一个模块纯粹用于测试 并且包含许多错误 我想在此屏幕截图中抑制 NNGINETest 上的所有警告 错误 检查 有没有办法配置项目来做到这一点 我找到了这
  • 显示 10 秒后重复淡入淡出两张图像

    我正在尝试使用 HTML 和 CSS 在每张图像显示 10 秒后对其进行交叉淡入淡出 我希望这个不断重复 这是我的 HTML div img class bottom src 1 png img class top src 2 png di
  • Chartjs饼图,径向位移(偏移)

    Chartjs 2 是否支持饼图部分的径向位移 偏移 Chart js 本身无法像这样切出一块 但你总是可以定义您自己的图表类型 http www chartjs org docs advanced usage writing new ch
  • UIViewContentModeScaleAspectFit iphone sdk 提供质量差的图像

    希望快一点吗 我正在创建一个自定义 uitableviewcell 并添加了一个图像视图 我有一些尺寸约为 200x200 的 PNG 图像 我想创建一个缩略图以放入表格视图中 但是当我调整图像大小时 会导致图像质量较差 I use UIV
  • React 组件的推断泛型类型

    Typescript 对于推断泛型类型非常有用 例如 如果我编写以下代码 class AwesomeClass
  • Android 键盘打开时防止文档重排/浏览器调整大小

    这是针对 HTML5 Javascript Web 应用程序 而不是本机 Android 应用程序 当 android 软键盘打开时 如何防止浏览器 DOM 调整我的内容大小 响应式 主要是 vw vh 大小等 发生的情况是 一旦打开键盘