Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 移动浏览器没有';隐藏地址栏时不触发调整大小事件_Javascript_Html_Css_Google Chrome_Mobile - Fatal编程技术网

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工具栏被隐藏,这会改变高度的值。当我向上滚动时,工具栏将显示,并且再次更改高度值。