skyline引擎下,用boundingClientRect获取不到span下text的rect中与offset相关的信息。这是一个诡异的问题,如果用代码片段模式,会发现是能获取到。一到正式工程,就获取不到了,所以不要在代码片段模式里面复现。复现步骤如下:
- 用js-skyline基础模板创建一个项目。
- 将以下代码复制到项目首页。
// 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}
怀疑你正式环境下,text 内的文本通过 setData 更新,有时序问题