背景
我无法使用 JavaScript 获得可靠的视口大小。我已通读本指南以设置应用程序,并阅读本指南以了解针对特定设备分辨率的信息。
这是<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。有一个更好的方法吗?