三星Galaxy S7慢到为视口高度分配正确的值?

时间:2017-02-24 19:40:12

标签: javascript android jquery mobile samsung-mobile

加载页面时,要检查是否使用横向或纵向方向的样式,我们使用视口宽度和高度:

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特有的问题。有没有人遇到过这个问题,如果有的话,你是怎么解决的?

1 个答案:

答案 0 :(得分:0)

这是由Android上的软键盘引起的。当键盘打开时,值$(window).height();变为(上一个窗口高度 - 键盘高度)。

我会输入一个搜索栏然后按回车键,然后当搜索结果页面加载时,上一页的软键盘仍然没有收回我的样式检查所用的前x毫秒数完成。

通过使用window.orientation中的值来检查Android设备是处于纵向还是横向模式,而不是仅仅依靠$(window).width();和{{1}中的值的比较来解决这个问题}