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() 在真机调试时获取不到节点信息。这可能是百度小程序基础库版本升级导致的兼容性问题。

建议的解决方案:

  1. 条件编译(当前已采用)
// #ifdef MP-BAIDU
const query = swan.createSelectorQuery();
// #endif
// #ifndef MP-BAIDU  
const query = uni.createSelectorQuery().in(this);
// #endif
回到顶部