- 当前 Bug 的表现(可附上截图)和预期表现
在本人之前发过的帖子里有叙述:https://developers.weixin.qq.com/community/develop/doc/000ae8c801c8c0c84288404b651000
- 复现路径
这次的复现场景较为特殊,需要用户关闭一次广告后再进入页面,且同样在开发者工具上复现。
经检查,发现是wx.createSelectorQuery返回ad的syle时出现问题
基础库在2.6.6时,广告无论是否关闭过,返回的style都是width:300px,height:86px
而基础库一旦高于2.7.0,只要广告关闭过,返回的style就会变成width:100%,height:auto
导致广告组件显示异常
- 提供一个最简复现 Demo
const query = wepy.createSelectorQuery() query.select( '#' + mining.wxAd.id).fields({ computedStyle: [ 'width' , 'height' ] }) query.exec( function (res) { if (res[0]) { let { width, height } = res[0] } } |
总结一下就是:
基础库高于2.6.6时,wx.createSelectorQuery返回ad组件的style在特殊场景下(广告关闭后刷新页面再显示)不正常
正常情况下应返回正确的宽高值300px和86px,而不是100%和auto
你现在的方式是使用ad的宽度来计算外层view的缩放吧?我们不建议这样使用
正确使用方式应该是下面这样:ad默认宽度是100%,开发者可以直接在ad标签外层包一个view,通过设置view的宽度来调整ad的宽度,view的宽度不能设置小于300px,因为ad发现外层宽度小于300px时,会自动把自身设置成300px,具体可参考:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/ad/banner-ad.html
嗯,其实你说的通过设置外层view宽度来限制ad这一点我也知道。但是考虑到开发场景,作为开发者更愿意将ad封装成一个组件,这样不管产品如何设计ad的展现位置,只要封装好的组件内部缩放得当即可,而不是每次都要传入外层view的宽度。
PS:文中问题我已经做好兼容处理了,未拿到宽高准确值时不显示广告