加载页面时,要检查是否将样式用于景观或肖像方向,我们使用视口宽度和高度:
var viewPortWidth = $(window).width();
var viewPortHeight = $(window).height();
if(viewPortWidth > viewPortHeight)
{
// Landscape style
}
在所有手机中都可以正常工作,除了三星Galaxy S7外,在初始负载上的高度值不正确。
在三星Galaxy S7中,当页面加载肖像方向时,我将这些值打印到控制台:
$(window).width();
返回 330
$(window).height();
返回 310 - 错误
然后,当页面满载时,我再次在控制台中查询这些值,这一次:
$(window).width();
返回 330
$(window).height();
返回 520 - 正确
- 当我刷新页面时,它按预期工作 - 仅在初始加载,从另一个页面导航到该页面时,
$(window).height()
无法保持正确的值。 - 这只是开发和测试环境上的问题,而不是生产问题。
- 这仅发生在某些页面,而不发生在其他页面上。
现在,将正确的值分配给$(window).height()
似乎花费了大约150毫秒,因此我暂时将分配样式分配的功能延迟了150毫秒。
我很好奇这是否是针对三星Galaxy S7的问题。有人以前遇到过吗?如果是这样,您是如何解决的?
这是由Android上的软键盘引起的。当键盘打开值时,$(window).height();
更改为(上一个窗口高度 - 键盘高)。
我将输入搜索栏,然后按Enter,然后当搜索结果页面加载上一页的软键盘时,仍然没有在完成我的样式检查的第一个x量x量中缩回。
通过使用window.orientation
中的值来检查Android设备是否处于肖像或景观模式,而不仅仅是依靠$(window).width();
和$(window).height();