Javascript 要在iOS键盘激活时调整浏览器视口的大小吗

Javascript 要在iOS键盘激活时调整浏览器视口的大小吗,javascript,ios,css,safari,Javascript,Ios,Css,Safari,在iOS web浏览器(Safari、Chrome等)中,当您单击输入字段并显示键盘时,它会保持视口的大小不变,但会将其部分向上滑动,使其无法显示。这使得创建类似应用程序的网站变得非常困难,因为我正在编写一个聊天应用程序,当键盘显示我想完全查看对话时,只需调整对话区域的大小以适应新的“调整大小”的可视区域 我尝试了所有方法,例如将对话区域绝对定位为left:0;右:0;排名:0;底部:0,但iOS仍然保持视口的大小不变,并将其向上推并部分移出视图 这可能吗?还是CSS或JavaScript无法控

在iOS web浏览器(Safari、Chrome等)中,当您单击输入字段并显示键盘时,它会保持视口的大小不变,但会将其部分向上滑动,使其无法显示。这使得创建类似应用程序的网站变得非常困难,因为我正在编写一个聊天应用程序,当键盘显示我想完全查看对话时,只需调整对话区域的大小以适应新的“调整大小”的可视区域

我尝试了所有方法,例如将对话区域绝对定位为
left:0;右:0;排名:0;底部:0
,但iOS仍然保持视口的大小不变,并将其向上推并部分移出视图


这可能吗?还是CSS或JavaScript无法控制的系统级功能?

简单的答案是软键盘与浏览器分开,不能由浏览器内部的任何东西控制。

Android和iOS对软键盘的处理方式都不一样,因此编写跨设备工作的内容将很困难

iOS Safari不会更改浏览器窗口的大小。它实际上会将整个应用程序窗口向上推,从而隐藏设备屏幕的顶部。因此,在理论上,位置是固定的页脚应该按照您期望的方式工作。(位置
固定
绝对
更可取。)

实际上,固定定位的实际工作方式似乎取决于iOS的版本。但是,从iOS版本12开始,您可以使用javascript查看对
window.innerHeight
的更改,并在情况发生变化时添加一个新类

Android上的Chrome似乎在物理上改变了浏览器窗口的高度,因此屏幕大小
媒体查询
可能足以定位这种情况下的内容


和往常一样,有太多的设备/操作系统/屏幕组合,你应该尽可能多地进行测试,并意识到你可能永远无法解决所有这些问题。

你找到解决方案了吗?@IevgenNaida Nope,从来没有找到任何东西,但自从提出这个问题以来,我就没有研究过。我只是认为这是不可能的。