加载页面时,要检查是否使用横向或纵向方向的样式,我们使用视口宽度和高度:
var viewPortWidth = $(window).width();
var viewPortHeight = $(window).height();
if(viewPortWidth > viewPortHeight)
{
// Landscape style
}
在所有手机中,除了三星Galaxy S7之外,它的工作正常,初始负载时高度值不正确。
在Samsung Galaxy S7中,当页面以纵向方向加载时,我会将这些值打印到控制台:
$(window).width();
返回 330
$(window).height();
错误地返回 310 -
然后,当页面完全加载时,我再次在控制台中查询这些值:
$(window).width();
返回 330
$(window).height();
返回 520 - 正确
$(window).height()
不能保存正确的值。将{1}}分配给正确的值似乎需要150毫秒左右,所以我现在已经将指定样式的函数延迟了150毫秒。
我很好奇这是否是三星Galaxy S7特有的问题。有没有人遇到过这个问题,如果有的话,你是怎么解决的?
答案 0 :(得分:0)
这是由Android上的软键盘引起的。当键盘打开时,值$(window).height();
变为(上一个窗口高度 - 键盘高度)。
我会输入一个搜索栏然后按回车键,然后当搜索结果页面加载时,上一页的软键盘仍然没有收回我的样式检查所用的前x毫秒数完成。
通过使用window.orientation
中的值来检查Android设备是处于纵向还是横向模式,而不是仅仅依靠$(window).width();
和{{1}中的值的比较来解决这个问题}