防止视窗调整网页大小时,android软键盘是活跃的
Preventing viewport resize of web page when android soft keyboard is active
我正在开发响应式网页设计的Javascript/JQuery插件。它有一个监视视口变化的功能,特别是调整大小和方向。当检测到更改时,将调用相应的回调函数。
然而,我注意到在Android上(特别是在Google Galaxy Nexus上使用常规浏览器),如果用户尝试使用软键盘,它会调整视口大小,从而触发回调函数。这是我想要消除的行为。
是否有一种方法-通过Javascript -禁用此行为或检测它,以便我可以对代码库进行更改以适应它?
到目前为止,我所看到的解决方案主要与Android应用程序开发有关,我不确定它们是否适用于我的情况。
谢谢。
好了,经过一番摸索,我找到了解决问题的办法。
那么当显示/隐藏软键盘时会发生什么?在我的测试中,viewport width
保持不变。然而,当软键盘由43%
(纵向)和58%
(横向)显示时,viewport height
的大小会发生变化[((current - previous)/previous)*100
];当软键盘分别被73%
(纵向)和139%
(横向)隐藏时,
所以我所做的是在以下条件都为真时禁用回调函数:
- 设备是移动的
- 视口宽度变化百分比小于1%
- 视口高度变化百分比大于35%
由于移动设备浏览器没有像桌面浏览器那样的调整大小手柄,我不相信会出现这样的情况,用户会自然地模仿上述条件。
您可以在这里看到示例代码:https://github.com/obihill/restive.js/blob/f051fe6611e0d977e1c24c721e5ad5cb61b72c1c/src/restive.js#L4419。不幸的是,它是一个更大的代码集的一部分,但您应该能够根据条件收集基本思想。
欢呼。
我也遇到过类似的问题。我的解决方案是使用方向改变事件而不是调整大小事件,它会在你最不期望的时候触发android:P
$(window).bind( 'orientationchange', function(e){ // Type pretty code here });
来源:http://www.andreasnorman.com/dealing-androids-constant-browser-resizing/
我可以和我的pretty code
分享你。我在resize
事件上设置触发器,并计算相对于resize事件之前的高度。
originalHeight * 100 / currentHeight
给你的百分比,你可以改变高度
您可以在这里看到示例代码https://jsfiddle.net/ocg9Lus7/
更新19.11.2018
我建议你将值从动态(100%,vh等)更改为静态值后的onload窗口。如果你需要更多的动态容器,你可以通过绑定函数resize
事件(originalHeight * 100 / currentHeight
)来重新调整大小
您可以在这里看到一个示例代码:https://jsfiddle.net/gbmo6uLp/
- Android键盘不适用于包含Javascript的网页
- 键盘没有在Android和BlackBerry中显示元素焦点
- Chrome(Android)键盘将单词转移到js焦点更改的下一个输入
- 如何在Android网络视图中完全禁用所有输入的软键盘
- 关闭iOS / Android上的软键盘
- 如何从钛中的选项对话框单击事件中隐藏Android软键盘
- 如何处理iOS和Android键盘中的差异
- Android键盘涵盖了web表单上的元素
- 如何在Mobile Hybrid应用程序中将Android键盘设置为大写字母
- 对于html输入,Android键盘默认为大写优先
- Ionic Android -键盘不显示输入焦点
- Android键盘在CSS中使用单位vh收缩视口和元素
- CSS - Android键盘上推元素
- 如何禁用Android键盘在webview中控制输入字段
- 如何使用javascript强行关闭android键盘
- 隐藏Android键盘在javascript输入字段模糊
- Android键盘关闭后仍然出现
- Android -键盘覆盖输入框-即使在Chrome浏览器
- Android键盘隐藏文本输入
- Android键盘上点击字母运行功能