如何使window.innerHeight在缩放时在移动设备上工作?

时间:2012-03-23 01:02:12

标签: javascript jquery iphone ipad mobile

window.innerHeight

是的,它会在移动设备上返回浏览器高度的值。但是,当用户尝试捏合放大或缩小时,问题会出现(在某些浏览器上)。该值将无法正确调整,而是仍然返回页面的全长。

我们说加载时它是500px。然后用户放大,高度现在是200px。但是,该值仍然返回500px。

有谁知道解决此问题的方法?一直在寻找。

3 个答案:

答案 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以及所有调整大小时放大或方向更改有时会导致缩放。

这个有趣的方面是移动浏览器从未真正改变屏幕尺寸,因为它们是固定的,它们只是缩放。但是如果你调整到原始宽度/高度并以这种方式处理方向它似乎有用。