uni-app 百度小程序中 uni.createSelectorQuery() 在真机调试时获取不到节点信息
uni-app 百度小程序中 uni.createSelectorQuery() 在真机调试时获取不到节点信息
| 类别 | 信息 |
|---|---|
| 产品分类 | uniapp/小程序/百度 |
| PC开发环境 | Windows |
| 操作系统版本 | 10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.1.7 |
| 工具版本 | 3.28.1 |
| 基础库版本 | 2.220 |
| 项目创建方式 | HBuilderX |
示例代码:
try {
const query = swan.createSelectorQuery();
query
.select('.header')
.boundingClientRect(data => {
this.headerRect = data;
console.log('百度获取节点信息:');
console.log(data);
})
.exec();
} catch (error) {
console.log(error);
}
try {
const query = uni.createSelectorQuery().in(this);
query
.select('.header')
.boundingClientRect(data => {
this.headerRect = data;
console.log('uni-app获取节点信息:');
console.log(data);
})
.exec();
} catch (e) {
console.log(error);
}
操作步骤:
- 运行代码示例,手机预览
预期结果:
- 能正常返回节点信息
实际结果:
- uni.createSelectorQuery() 能正常返回节点信息
bug描述:
- 百度小程序
- 使用 uni.createSelectorQuery()
- 真机(苹果百度App,安卓没测试)上获取不到节点信息,返回空对象;
- 开发工具在调试基础库3.250及以下能获取。
- 使用 swan.createSelectorQuery()
- APP、开发工具均可获取。
- 注:目前的解决方案是条件编译
更多关于uni-app 百度小程序中 uni.createSelectorQuery() 在真机调试时获取不到节点信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
哪个生命周期调用的,是 onReady/mounted 吗?
更多关于uni-app 百度小程序中 uni.createSelectorQuery() 在真机调试时获取不到节点信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
onReady,也尝试使用了this.$nextTick(() => {})
bug 确认,已加分,后续修复
这是一个百度小程序平台的兼容性问题。在百度小程序中,uni.createSelectorQuery() 和 swan.createSelectorQuery() 确实存在行为差异。
从你的测试结果看,swan.createSelectorQuery() 在各个环境下都能正常工作,而 uni.createSelectorQuery() 在真机调试时获取不到节点信息。这可能是百度小程序基础库版本升级导致的兼容性问题。
建议的解决方案:
- 条件编译(当前已采用)
// #ifdef MP-BAIDU
const query = swan.createSelectorQuery();
// #endif
// #ifndef MP-BAIDU
const query = uni.createSelectorQuery().in(this);
// #endif

