这是针对 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(使用前将#替换为@)