在构建基于 Google AdSense 盈利的网站时,开发者可能会遇到广告单元不自动刷新或填充失败的问题,尤其是在单页应用(SPA)场景中。当页面发生内容切换,广告未能及时更新,会影响展示效果和收益。
为解决这一类问题,本文介绍一个我自己实现、实际使用中的轻量级 JavaScript 脚本 auto-refresh-gad.js
,用于在特定条件下自动刷新页面上的 Google AdSense 广告单元。
👉 已开源:https://github.com/axiaoxin/auto-refresh-gad.js
Google AdSense 通常依赖于页面加载事件自动填充广告内容。然而在以下场景中,这种机制可能失效:
Google 官方尚无标准方案可解决这些问题,因此通过脚本控制广告刷新成为一个实际可行的技术补丁。
该脚本的核心机制包括:
<ins class="adsbygoogle">
元素,重新插入并执行 adsbygoogle.push({})
来触发重新加载。你可以访问 GitHub 仓库下载脚本文件:
建议将脚本托管到自己的网站上,避免因第三方资源不可用导致加载失败。
确保广告外层使用统一类名(默认 .auto-refresh-gad
):
<div class="auto-refresh-gad">
<ins
class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-XXXXXXX"
data-ad-slot="XXXXXXX"
data-ad-format="auto"
data-full-width-responsive="true"
></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
将脚本引入页面底部,在 <body>
标签结束前加载:
<script src="/js/auto-refresh-gad.js"></script>
如果使用构建工具(如 Vite/Webpack),可作为模块引入打包。
通过 window.CONFIG
对象进行自定义配置,需在脚本加载前设置:
window.CONFIG = {
minRefreshInterval: 120000,
maxRefreshInterval: 180000,
maxRefreshCount: 5,
viewportThreshold: 0.7,
containerSelector: ".auto-refresh-gad",
debug: false,
};
配置项 | 推荐值 |
---|---|
minRefreshInterval | ≥ 180000ms(3 分钟) |
maxRefreshCount | ≤ 5 |
viewportThreshold | ≥ 0.7 |
生产环境关闭调试 | 将 debug 设置为 false |
务必避免配置为高频刷新行为,建议设置保守参数,避免触发 AdSense 合规风险。
分享一些和其他站长交流以及我的个人经验:
Google AdSense 禁止人为制造无效展示。虽然脚本未模拟点击或虚假行为,但频繁刷新广告可能仍被视为异常。
适用场景包括:
⚠️ 不建议用于 试图提升广告展示次数 或规避 Google 检测的场景,使用者需自行评估风险。
auto-refresh-gad.js
是一个轻量、易用的广告刷新补丁,适合用于特定前端场景下优化 AdSense 加载行为。
完整源码与使用说明见:auto-refresh-gad.js GitHub 项目地址。
欢迎 Star 或提 Issue 交流改进。
本文已同步发布到微信公众号「人言兑」
👈 扫描二维码关注,第一时间获取更新!