googletag.cmd.push(function() {
  googletag.pubads().addEventListener('slotRenderEnded', function(e) {
    if (e.isEmpty) document.getElementById(e.slot.getSlotElementId()).hidden = true;
  });
});

文章中部固定留了 250 像素高的广告位,没有广告返回时那块就空着,段落之间像断了一截。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,容器高度写死,未填充回调没有处理。广告请求失败时也没有兜底,块一直占着位置。

「广告未填充」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

处理上按这个顺序:监听广告的未填充和错误事件;未填充时把容器高度收掉,或者换成站内推荐位;占位元素给一个最小高度,避免布局跳动;用广告拦截或空账户复现一次未填充。

改完只确认一件事:没有广告时容器自动收起,正文段落之间不留空白。

作者 9823189