Google广告显示不正确的问题

响应式广告单元

互联网从业人员相比对于Google Adsense应该非常熟悉,它就像我们生活中常见的楼宇电梯电视广告一样,是互联网上的一种广告类型。每个网站通过安装一块电视,定期的向用户播放广告。只不过Google的这块电视,能够根据网站的内容、用户的访问行为等一系列大数据为每个用户投放最感兴趣的内容。

Google Adsense 提供了很多广告类型、种类、主题,这样我们就能够根据自己网站的内容来选择最合适的广告进行投放。在做决定时,最重要的就是广告的尺寸,因为合适的广告尺寸对用户来说更有吸引力,也能通过展示获得更多的点击。

对于布局尺寸固定的网站,确定一个最好的尺寸比较容易。对于一些响应式网站,如何确定最佳的广告尺寸非常困难。因此Google提供了响应式的广告单元。

工作原理

页面加载后,响应式广告单元 Responsive Ad Units 读取父容器的尺寸(高*宽),基于此来决定广告的最佳尺寸。这就让我们在为网站选择广告时变得非常简单,广告的尺寸不需要再固定,它会基于父容器的尺寸而完美的适配展示广告内容。

问题现象

如果有需求要求在PC版上显示广告,而在移动版上隐藏广告内容,这就会与Google Adsense的要求冲突,因为在服务条例中不允许对广告单元使用display:none或者使用其他的HTML元素。

这时会报出以下错误。

Uncaught TagError: adsbygoogle.push() error: No slot size for availableWidth=0

这个错误在容器没有可计算出的width属性时发生,例如将元素隐藏、元素使用了绝对或者浮动布局。

最近我更换了博客模板,在向自己的博客添加Google Adsense时,也不小心触发了这个错误。

WX20200327-090646

官方方案

为满足上面的需求,Google Adsense允许通过CSS3的media queries来对广告单元做特定的修改,具体要求如下:

  1. 不能使用响应式广告控制的特性,例如需要移除广告代码中的data-ad-format
  2. ins标签增加一个class名称,例如right_side_ad
  3. 在CSS Media query中指定什么情况展示广告,什么情况不展示。如果广告父容器是absolute布局,则需要指定高度和宽度。

参考资料

posted @   Cocowool  阅读(1365)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2017-03-29 Python3.6学习笔记(三)
点击右上角即可分享
微信分享提示