···
const GetRect = (selector : string, context ?: any, all = false) => {
return new Promise((resolve, reject) => {
try {
let query = uni.createSelectorQuery();
if (context) {
query = uni.createSelectorQuery().in(context);
}
queryall ? "selectAll" : "select"
.boundingClientRect(function (rect) {
if (all && rect && Array.isArray(rect) && rect.length) {
resolve(rect);
}
if (!all && rect) {
resolve(rect);
}
resolve(rect);
})
.exec();
} catch (e) {
//TODO handle the exception
}
});
}
const calcScrollXWidth = async () => {
const rect = await GetRect(#cont-box-${formId.value}
, proxy, true);
console.log('cont-box', rect)
if (rect) {
let maxRect = 0
if (Array.isArray(rect)) {
rect.forEach((item) => {
if (!maxRect) {
maxRect = item.width
} else if (maxRect < item.width) {
maxRect = item.width
}
})
}
if (maxRect) {
scorllXWidth.value = maxRect
}
}
}
···
- 发布:2024-11-28 10:40
- 更新:2024-11-29 11:34
- 阅读:68
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Win10
HBuilderX类型: 正式
HBuilderX版本号: 4.28
手机系统: Android
手机系统版本号: Android 10
手机厂商: 小米
手机机型: Redmi
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
将屏幕从横屏翻转为竖屏后使用 uni.createSelectorQuery()获取节点的宽高
将屏幕从横屏翻转为竖屏后使用 uni.createSelectorQuery()获取节点的宽高
预期结果:
获取当前屏幕状态下的节点宽高
获取当前屏幕状态下的节点宽高
实际结果:
取到的是横屏下的宽高
取到的是横屏下的宽高
bug描述:
在使用uni.createSelectorQuery()获取自定义组件的节点宽度和高度时,屏幕先由竖屏翻转为横屏此时获取的宽高是正确的,从横屏翻转为竖屏此时再获取宽高就一直是横屏时的宽高
1 个回复
DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信
折叠屏竖屏 请求 createQuerySelector 查询正常,切换为横屏之后查询正常,再切换为竖屏不正常是吗?如果不是请具体描述一下场景。
如果等两秒再请求是否正常?请排查下是功能有延迟,还是功能调整几次之后功能坏了