请问getSystemInfo和getSystemInfoSync的区别
发布于 5 年前 作者 houjuan 13037 次浏览 来自 问答

官方文档中wx.getSystemInfo()和wx.getSystemInfoSync()的说明十分简单,麻烦具体说明一下两者的区别,例如在什么场景下使用wx.getSystemInfo()或wx.getSystemInfoSync()。

其次,screenHeightscreenWidth)和windowHeightwindowWidth)这两者又有什么联系,“可使用”是指什么呢?

目前遇到一个问题,在一个下拉加载的列表中,使用screenHeight可以正常显示,使用windowHeight在大屏手机可以正常显示,但是小屏手机(例如iPhone5)中,底部会留有一大块空白区域。

最后,一个屏幕的长度像素是screenHeight * pixelRatio吗?


谢谢解答!(((((ી(・◡・)ʃ)))))

9 回复

@晨 谢谢解答。那我这样理解对吗?

这样的话windowHeight应该有点兼容性的问题哦,目前遇到一个问题,我在webview里面做了一个下拉加载的列表。列表的高度,使用screenHeight可以正常显示;使用windowHeight在大屏手机iPhone6可以正常显示(底部也有一点点留白,但还没有影响),但是小屏手机iPhone5中,底部会留有一大块空白区域(很大一块,差不多占了屏幕1/3)。

样式代码:scroll-view style=“height: {{window_height - 80}}rpx; margin-top: 80rpx;”

window_height = windowHeight(或screenHeight) * pixelRatio;

(꒪ꇴ꒪(꒪ꇴ꒪ ;)哈?你说的此pixelRatio非彼pixelRatio,那pixelRatio到底是啥啊?web API的devicePixelRatio只有wx.getSystemInfo()和wx.getSystemInfoSync()出现文档上的说明就“设备像素比”5个字,我们很难弄懂啊,我已经通篇阅读过开发文档了,结合wxss那一篇的说明,得出结论就是这样滴,不是想当然。

你没有搞清楚pixelRatio设备像素比的含义,可以参照web API的devicePixelRatio。请先查阅资料了解一下,不要想当然。

哦哦,我找到问题所在了。目前我列表的高度取的是:screenHeight*pixelRatio(这是正常的),但按照你的说法,其实我应该取windowHeight*pixelRatio(在iphone5底部有空白区域)。我重新把获取的设备信息打印出来看了一下,发现iphone5和iphone6的pixelRatio是一样的,这个值按照比例换算来说应该不一样的吧?


------这是iPhone5的

------这是iPhone6的

单位都是px

之前说的不太完整,windowHeight不包括通知栏、标题栏和tabBar,他的单位是px。rpx的计算不是直接乘pixelRatio。请参考WXSS文档

文档确实没有解释好pixelRatio和rpx,px的关系。

如果很多人都看了想当然的得出错误的结论。那么就是文档说的不够清楚

嗯嗯,那screenHeight和windowHeight的区别是这样对吗?

1.作用域不同:screenHeight是整合手机屏幕的高度,windowHeight是webview(不包括手机通知栏、小程序标题栏和tabBar)的高度;

2.单位不同:screenHeight的单位是rpx,windowHeight的单位是px;

screenWidthwindowWidth只有单位不同对吧?

最后,结合WXSS的文档,rpx的计算不是rpx = px * pixelRatio 吗?例如iphone6,750rpx = 375px * 2。

如果要实现一个高度与webview一样的下拉加载列表,单位用rpx,是不是这样子取值呢?

1.window_height = screenHeight

2.window_height = windowHeight * pixelRatio

getSystemInfo 是异步方法,getSystemInfoSync是同步方法

screenHeight 是屏幕总高度,windowHeight是webview可显示区域高度,不包含顶部标题栏

回到顶部