收藏
回答

skyline引擎下,用boundingClientRect获取不到span下text的rect信息

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug text 微信iOS客户端 8.0.50 3.5.3

skyline引擎下,用boundingClientRect获取不到span下text的rect中与offset相关的信息。这是一个诡异的问题,如果用代码片段模式,会发现是能获取到。一到正式工程,就获取不到了,所以不要在代码片段模式里面复现。复现步骤如下:

  1. 用js-skyline基础模板创建一个项目。
  2. 将以下代码复制到项目首页。
// index.wxml
<view style="height: 200px;"></view>
<span id="span">
  <text id="text">text</text>
</span>

// index.js
Component({  
  lifetimes: {
    ready() {
      this.createSelectorQuery().select(`#text`)
      .boundingClientRect((rect) => {
        if (rect) {
          console.log(`text rect:${JSON.stringify(rect)}`)
        }
      })
      .exec(); 
    }
  }
})

3.开发者工具控制台或真机环境都会输出如下结果,所有offset的相关信息是0

text rect:{"id":"text","dataset":{},"left":0,"top":0,"right":0,"bottom":0,"width":0,"height":0}

4.如果以代码片段运行,会得到正确结果:

text rect:{"id":"text","dataset":{},"left":0,"right":29.109375,"top":200,"bottom":221,"width":29.109375,"height":21}


回答关注问题邀请回答
收藏

1 个回答

  • 黄思程
    黄思程
    08-21

    怀疑你正式环境下,text 内的文本通过 setData 更新,有时序问题

    08-21
    有用
    回复
登录 后发表内容