window.innerHeight
是的,它会在移动设备上返回浏览器高度的值。但是,当用户尝试捏合放大或缩小时,问题会出现(在某些浏览器上)。该值将无法正确调整,而是仍然返回页面的全长。
我们说加载时它是500px。然后用户放大,高度现在是200px。但是,该值仍然返回500px。
有谁知道解决此问题的方法?一直在寻找。
答案 0 :(得分:0)
我修复此问题的方法是删除代码中的任何调整大小回调。听起来很奇怪,但它对我有用。
答案 1 :(得分:0)
查看此链接中接受的答案: Detect page zoom change with jQuery in Safari
如果你想要innerHeight,可以获得原始宽度然后缩放宽度,获得缩放比率然后计算新的高度(缩放后)。
答案 2 :(得分:0)
这对我有用。我做的第一件事就是在页面加载时从dom中获取window.innerHeight和window.innerWidth,这样我就可以得到原始值并将它们存储在javascript变量中。然后在我的window.onresize事件处理程序中执行此操作。
var height = null;
var width = null;
if (window.orientation && window.orientation == -90) {
height = myOriginalHeight;
width = myOriginalWidth;
}
else {
height = myOriginalWidth;
width = myOriginalHeight;
}
doCallbacks(width, height);
我的应用程序调整了很多因为我尝试为所有屏幕类型编写一个ui。根据我对应用程序的测试,这适用于ipad和andriod以及所有调整大小时放大或方向更改有时会导致缩放。
这个有趣的方面是移动浏览器从未真正改变屏幕尺寸,因为它们是固定的,它们只是缩放。但是如果你调整到原始宽度/高度并以这种方式处理方向它似乎有用。