Javascript 移动浏览器没有';隐藏地址栏时不触发调整大小事件
我的网站上有两个部分,我将其高度设置为Javascript 移动浏览器没有';隐藏地址栏时不触发调整大小事件,javascript,html,css,google-chrome,mobile,Javascript,Html,Css,Google Chrome,Mobile,我的网站上有两个部分,我将其高度设置为window.innerHeight。触发调整大小事件时,高度将更新 这在我的桌面上非常有效,但在我的android手机上我遇到了一些问题 在Chrome for android中,如果向下滚动以隐藏地址栏并更改窗口大小,Chrome将触发调整大小事件并更新高度 Firefox和默认android浏览器在隐藏地址栏后不会触发此调整大小事件。如果我手动将设备的方向从纵向更改为横向,然后再向后更改,则高度会像应该的那样进行更新 所以我试着亲自发送一个方向更改事件
window.innerHeight
。触发调整大小事件时,高度将更新
这在我的桌面上非常有效,但在我的android手机上我遇到了一些问题
在Chrome for android中,如果向下滚动以隐藏地址栏并更改窗口大小,Chrome将触发调整大小事件并更新高度
Firefox和默认android浏览器在隐藏地址栏后不会触发此调整大小事件。如果我手动将设备的方向从纵向更改为横向,然后再向后更改,则高度会像应该的那样进行更新
所以我试着亲自发送一个方向更改事件,但没有成功
有没有办法让Firefox和默认浏览器表现得像Chrome
以下是移动浏览器(经过测试的Android/Chrome iOs/Safari),当切换地址栏时,只有在用户将手指从屏幕上移开后,才会触发调整大小事件
但是,我们可以使用touchmove
事件,它首先使浏览器隐藏或显示地址栏。在处理程序中,我们可以使用window.innerHeight
属性来检测视口高度的变化。使用jQuery:
$(window).on('resize touchmove', function () {
// adjust heights basing on window.innerHeight
// $(window).height() will not return correct value before resizing is done
});
它并不完美,但它是我提出的唯一可行的解决方案
整个行为有点奇怪,因为即使使用position:fixed
设置样式的元素也只有在触摸结束后才会重新绘制
此外,如果调整功能导致延迟,则处理程序可能会被取消公告。由于您无法更改默认浏览器行为,您可能需要检查高度是否在5秒钟左右发生过更改。我尝试过这个,但问题是
window.innerHeight
的值没有更新。您确定窗高会更改吗?在Firefox中,窗口高度只有在方向改变后才会改变。如果我只是向下滚动,窗口高度不会改变。我也有同样的问题,当我在谷歌Chrome中向下滚动时,Android工具栏被隐藏,这会改变高度的值。当我向上滚动时,工具栏将显示,并且再次更改高度值。