收藏
回答

疑似基础库2.7.0的bug,小程序banner广告组件显示异常(再复现)

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug ad 客户端 7.0.4 2.6.6/2.7.0

- 当前 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

最后一次编辑于  06-17
回答关注问题邀请回答
收藏

1 个回答

  • Peter潘
    Peter潘
    06-17

    你现在的方式是使用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


    06-17
    赞同
    回复 1
    • 曹阳
      曹阳
      06-17

      嗯,其实你说的通过设置外层view宽度来限制ad这一点我也知道。但是考虑到开发场景,作为开发者更愿意将ad封装成一个组件,这样不管产品如何设计ad的展现位置,只要封装好的组件内部缩放得当即可,而不是每次都要传入外层view的宽度。

      PS:文中问题我已经做好兼容处理了,未拿到宽高准确值时不显示广告

      06-17
      回复