You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Adsense调用push({})刷新全部广告问题:仅需刷新新增空广告单元

解决无限滚动中仅加载新增Adsense广告单元的问题

问题核心在于调用(adsbygoogle = window.adsbygoogle || []).push({})时未指定目标广告单元,导致Adsense重新加载页面所有广告。要实现仅刷新新增单元,需要在push时传入新增的广告元素作为目标。

修改方案:

  • 避免用innerHTML +=插入广告(这种方式会重新解析DOM,可能引发不必要的重绘),改用DOM API创建并插入广告元素
  • 插入后获取新增的.adsbygoogle元素,在push时通过slot参数指定该元素

修改后的代码:

var totalLoadedPosts = document.querySelectorAll('.post').length;
let startCount = 24;
const observer = new MutationObserver(function(mutationsList) {
    mutationsList.forEach(function(mutation) {
        mutation.addedNodes.forEach(function(addedNode) {
            if (addedNode.classList?.contains('post')) {
                totalLoadedPosts = document.querySelectorAll('.post').length;
                if ((totalLoadedPosts - startCount) === 24) {
                    startCount += 24;
                    
                    // 创建广告容器和元素
                    const adItem = document.createElement('div');
                    adItem.className = 'item';
                    
                    const adIns = document.createElement('ins');
                    adIns.className = 'adsbygoogle';
                    adIns.style.display = 'block';
                    adIns.setAttribute('data-ad-format', 'fluid');
                    adIns.setAttribute('data-ad-layout-key', 'XXXXXXXXXX');
                    adIns.setAttribute('data-ad-client', 'ca-pub-2XXXXXXXXXXXXXX9');
                    adIns.setAttribute('data-ad-slot', 'XXXXXXXXXX');
                    
                    adItem.appendChild(adIns);
                    document.querySelector('.posts-wrap').appendChild(adItem);
                    
                    // 仅加载新增的广告单元
                    (adsbygoogle = window.adsbygoogle || []).push({slot: adIns});
                }
            }
        });
    });
});

关键说明:

  • 使用document.createElement和appendChild替代innerHTML +=,能直接获取到新增的ins元素引用
  • push({slot: adIns})告诉Adsense仅加载指定的广告单元,不会触发全局广告刷新
  • 修正了变量名拼写错误(totalLodedPosts → totalLoadedPosts),使用let声明startCount提升变量作用域规范性

内容的提问来源于stack exchange,提问作者user9043146

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:42:35