如题 //[uts.sdk.modules.DCloudUniGetSystemInfo.GetSystemInfoResult]
{
"SDKVersion": "",
"appId": "UNIE5D6309",
"appLanguage": "zh-Hans",
"appName": "营养大观园-uni-app-x-vdom",
"appTheme": "light",
"appVersion": "1.0.1",
"appVersionCode": "100",
"appWgtVersion": null,
"brand": "huawei",
"browserName": "",
"browserVersion": "",
"deviceBrand": "huawei",
"deviceId": "1256e5cf-35f9-454c-9182-c41d6acddcdc",
"deviceModel": "HMA-AL00",
"deviceOrientation": "portrait",
"devicePixelRatio":
//[number]
2.55,
"deviceType": "phone",
"hostFontSizeSetting": null,
"hostLanguage": null,
"hostName": null,
"hostSDKVersion": null,
"hostTheme": null,
"hostVersion": null,
"language": "zh-CN",
"model": "HMA-AL00",
"osAndroidAPILevel":
//[number]
29,
"osHarmonyDisplayVersion": null,
"osHarmonySDKAPIVersion": null,
"osLanguage": "zh-CN",
"osName": "android",
"osTheme": "light",
"osVersion": "10",
"pixelRatio":
//[number]
2.55,
"platform": "android",
"romName": "HarmonyOS",
"romVersion": "4.0.0",
"safeArea":
//[uts.sdk.modules.DCloudUniGetSystemInfo.SafeArea]
{
"bottom":
//[number]
0,
"height":
//[number]
-40,
"left":
//[number]
0,
"right":
//[number]
0,
"top":
//[number]
40,
"width":
//[number]
0
},
"safeAreaInsets":
//[uts.sdk.modules.DCloudUniGetSystemInfo.SafeAreaInsets]
{
"bottom":
//[number]
0,
"left":
//[number]
0,
"right":
//[number]
0,
"top":
//[number]
40
},
"screenHeight":
//[number]
880,
"screenWidth":
//[number]
424,
"statusBarHeight":
//[number]
40,
"system": "Android 10",
"ua": "uni-app-x/5.24",
"uniCompileVersion": "5.24",
"uniCompileVersionCode":
//[number]
5.24,
"uniCompilerVersion": "5.24",
"uniCompilerVersionCode":
//[number]
5.24,
"uniPlatform": "app",
"uniRuntimeVersion": "5.24",
"uniRuntimeVersionCode":
//[number]
5.24,
"version": "15006",
"windowBottom":
//[number]
0,
"windowHeight":
//[number]
836,
"windowTop":
//[number]
0,
"windowWidth":
//[number]
0
}
uni-app-x vdom 模式下获取的windowWidth 为什么是0
driftPang
- 发布:53 分钟前
- 更新:52 分钟前
- 阅读:15
1 个回复
Ask小助手 - Ask社区AI助手
这是一个已知的平台差异问题,尤其在 Android 模拟器或部分 ROM(如华为/HarmonyOS 兼容层)的特定系统版本上容易出现。
核心原因:
windowWidth为 0 而screenWidth正常,通常是因为 App 原生窗口(Activity/Window)尚未完成首次布局测量(Layout),导致获取到的窗口可用宽度为 0。这在 VDOM 模式下,如果页面初始化时过早同步调用(如在onLoad或全局App.uvue的onLaunch中),更容易出现。建议解决方案:
使用
uni.getWindowInfo()替代(推荐)uni-app x 提供了更专注的
uni.getWindowInfo()API,其实现机制对窗口尺寸的获取时机做了优化,能避免getSystemInfoSync在部分场景下的时序问题。延迟到
onReady生命周期获取如果必须在
getSystemInfoSync中获取,请确保在页面渲染完成后调用,而不是在onLoad或setup的同步代码中:真机验证
根据社区反馈,该问题在 Android 模拟器 上较为常见,真机(如小米、华为等)通常返回值正常。建议优先使用真机调试验证。
参考:
总结: 优先改用
uni.getWindowInfo(),或在onReady生命周期后再获取。如果仍有问题,请确认真机环境,并检查 HBuilderX 是否为最新版本(5.24+ 已修复多项窗口信息获取的时序问题)。要回复问题请先登录或注册
公告
更多>相关问题