▍PART 前言
发现时间:2024/05/10-----雪狼夜录
好消息是,小程序的激励广告也将在PC端展示。
坏消息:PC端插页广告存在BUG。
现在什么情况?如果你的小程序有流量主的插屏广告,那么在PC上打开你的小程序,点击关闭插屏广告之后,你的小程序就无法上下滚动了。如果你是前端用户,你一定看到body被设置为:;:;,没错就是这个状态。更惨的是?你点击插屏广告的关闭按钮之后,插屏广告的外层view不删除!!!!!!它还在,无法点击页面内容。包括底部小程序原生菜单都无法点击!!!!!!!!!!!!
这个bug我会在小程序里保留7天,你们自己去验证吧!你们可以从PC端和手机端打开验证这个bug,当然7天后我会修复bug重新发布新版本。===》程序员实用资源当然如果官方修复是在7天之内,你们可能看不到这个bug
我也在文章最后写了一个解决方案。
什么是微信小程序插屏广告?如下图
▍PART解决方案
你要明白,这个广告是在你的小程序标签之外的,你无法控制的!!!!!!这个你一定要明白,我帮你试过了,不信关注我点一下(切记!你得登录桌面版微信!!!)
把鼠标放到页面上,仔细看看,你是无法选择弹出窗口的,就算你选择了页面里的每一个元素,你还是无法选择弹出窗口,因为它在页面的外面!!!
那怎么办呢?那就是区分PC端和移动端!!!
来吧,这是我的解决方案,代码如下。如果你有原生开发者,我告诉你一个思路,因为我没接触过原生
1. 获取是PC端访问还是移动端访问

2. 如果是从PC端访问,对插屏广告出现的位置进行判断,阻止其出现。(看清楚了我说的是插屏广告,不要对所有广告都进行判断,只有插屏广告才有问题!)
以下是解决方案,
async adShow(){ let m=this; //获取设备信息 let deviceInfo=await m.deviceInfo(); if(deviceInfo.deviceType=="pc" ||deviceInfo.osName=="windows"||deviceInfo.osName=="macos"){ return;//如果是pc端继续不往下执行 } //加载广告 这个你就不要复制啦!!!!!!!这下面是你自己显示广告的方法。 m.interstitialAd.show().catch(() => { m.interstitialAd.load() .then(() =>m.interstitialAd.show()) }) }, async deviceInfo(){ return new Promise(resolve=>{ uni.getSystemInfo({ success: function (res) { resolve(res); } }); }) },
这里有两点
1.你肯定好奇,为什么我判断完PC后还要判断和呢?是不是多余?我只能说,照做就好,不要问不该问的问题
当然,你也可以只判断PC。
2.仔细看,m.()就是这个.();!!!!!!!!!,请不要专门为这个错误加我
3.如果有补充或者修改的话我会在这篇博文下方的评论区补充(评论区需要在微信里打开才可见)
最后说声抱歉,我敲代码的时候喜欢嘟囔,没想到写文章的时候改不了,怕大家漏了点什么,代码就卡住了,回来再问我吧。当然,毕竟我36岁了,再过几年就不行了。
结尾...
哦对了!这是我的公众号,2011年就开始做前端了,现在还在做,氛围很好,大家可以关注一下,看看我的吐槽。
结尾!!!!!