【问题标题】:Samsung Galaxy S7 slow to assign correct value to viewport height?三星 Galaxy S7 为视口高度分配正确值的速度很慢?
【发布时间】:2017-02-24 19:40:12
【问题描述】:

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

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 特有的问题。以前有没有人遇到过这种情况,如果有,您是如何解决的?

【问题讨论】:

    标签: javascript android jquery mobile samsung-mobile


    【解决方案1】:

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

    我会在搜索栏中键入内容并按 Enter,然后当搜索结果页面加载前一页的软键盘时,在我的样式检查完成的前 x 毫秒内仍未收回。

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

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 2016-01-10
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      相关资源
      最近更新 更多