【发布时间】:2013-04-19 12:17:18
【问题描述】:
背景
我无法使用 JavaScript 获得可靠的视口大小。我已通读this guide 来设置应用程序,并阅读this guide 以了解针对特定设备分辨率的信息。
这是页面上的<meta>标签:
<!DOCTYPE html>
...
<meta name="viewport" content="target-densitydpi=device-dpi" />
这让我可以使用最清晰的图像来绘制界面。为了测试分辨率,我编写了这段代码:
window.addEventListener('orientationchange', function() {
console.log(screen.availWidth + ' x ' + screen.availHeight)
}
// 1080 x 1920 or 1920 x 1080
问题 1
我曾希望实际可用像素可以这样计算:
width := screen.availWidth / devicePixelRatio
height := screen.availHeight / devicePixelRatio
但devicePixelRatio固定为3,与目标dpi无关;那么如何确定我可以使用的实际像素呢?
问题 2
上面的screen.availHeight是不准确的,因为它没有考虑到WebView组件的实际高度。
我已经尝试过以下替代方法:
console.log(document.documentElement.offsetHeight);
// 1920
console.log(window.innerHeight);
// 240
这些值几乎没有用,更糟糕的是,它们不会在屏幕旋转时改变,也不依赖于目标 dpi。有没有更好的方法来做到这一点?
【问题讨论】:
-
也许 jQuery width() 和 height() 中的值会为您返回正确的值? responsejs.com/labs/dimensions
-
Hye Jack,请告诉我你是如何最终得到适合你的尺寸的。我也面临同样的问题。
标签: javascript android android-webview