刷新包含 Google 广告的 Div

IT技术 javascript ajax html refresh google-ads-api
2021-02-04 21:36:15

我有一个<div>包含谷歌广告的。我的网站主要是 AJAX,不需要刷新浏览器。这意味着我的广告也不会刷新,这并不理想,用户整天盯着一个广告。

所以我想要一种方法来刷新<div>页面上的特定内容。我找到了很多解决方案,但都没有奏效。例如,使用 JQuery 的 html 函数:

$("#ads").html("google ad script here");

这设法刷新了整个页面,不知道如何。我还可以向包含 Google 广告的 HTML 页面发出 AJAX 请求,但我猜它会产生与上述尝试相同的效果。

我不想使用 iFrame。

我还有其他选择吗?我的豌豆脑已经想不起来了。:)

编辑:

这是允许的,因为我只会在用户单击链接时启动刷新。

一个典型的例子是雅虎邮箱——他们的新 AJAX 邮箱使用了同样的方法,当用户点击一个链接时,就会显示一个新的广告。

6个回答

正如其他两个答案所述,不允许自动刷新您的 AdSense 广告。我知道您只是打算根据用户操作刷新广告,但仍然不允许,即使它应该是!

请记住,您要更新广告的原因是为了显示新广告。显示广告被称为“印象”。当您使用代码刷新广告时,您会自动生成广告展示次数。

AdSense 计划政策规定(重点是我的):

无效点击和展示

Google 广告的点击必须来自真正的用户兴趣。严禁以任何方式人为地在您的 Google 广告上产生点击或展示。这些被禁止的方法包括但不限于重复的手动点击或展示、使用机器人、自动点击和展示生成工具、产生点击或展示的第三方服务,例如付费点击、付费浏览、自动浏览、和点击交换程序,或任何欺骗性软件。

刷新您的广告违反了禁止产生印象的规则。话虽如此,我认为任何有理智的人都会同意在 AJAX 应用程序刷新广告以响应用户行为(例如响应点击)并不违反规则精神

例如,想象一下重写整个应用程序以停止使用 AJAX。对于您的用户来说,这显然是一种糟糕的体验(速度较慢,每次点击页面都会闪烁,页面无法在后台动态更新),但从技术上讲,这并不违反 AdSense 计划政策。

显然,谷歌的意思是禁止每五秒自动替换广告(创建广告的“幻灯片”)。Google 还打算禁止让您的网站看起来比您实际拥有的访问量更多,从而使您的网站对广告商更具吸引力。我敢肯定,他们无意阻止您设计高性能 AJAX 网站……但不幸的是,有时规则会产生意想不到的后果。

当然,正如您最初指出的那样,如果您将广告嵌入 iframe 并修改其位置,您仍然可以刷新广告。以下是在 AJAX 应用程序中使用 iframe 刷新 AdSense 的方法。)

您在最初的问题中拒绝了 iframe,可能是因为您知道使用 iframe 会违反 Google 的政策……但如果您坚持违反规则,那么您还不如一路违反!;-)

最终,我认为您会发现以这种方式产生印象并不值得冒险:您将“刷新”广告却发现 Google 只是向您展示了与以前完全相同的广告。

Mashable 伙计们是怎么做的?, 结帐 , mashable.com/2012/08/19/top-10-tech-10/...结帐图片幻灯片,在页面下方,点击每张图片,广告会刷新吗?
2021-03-21 21:36:15
昨天,Google 发布了 AdSense for Ajax,这正是您一直想要的。
2021-03-28 21:36:15
这是一个很好的阅读谢谢:) - 我仍然确定这不是非法的。我对粗体的句子有不同的解释。我不相信因为用户点击链接而触发的功能无论如何都是人为的!:)
2021-04-05 21:36:15
我不认为 OP 的计划违反了对政策信函的任何合理解释。很难看出 OP 所提议的内容与使用 JavaScript 捕获按钮点击并加载新 URL 的常见做法之间有任何相关区别。在这两种情况下,我们都有用户操作 -> JavaScript -> 更改页面内容。
2021-04-09 21:36:15
如果您注意到 gmail 上的广告,则每当您单击电子邮件(ajax 调用)时,广告都会刷新。所以这让我觉得根据用户点击刷新广告是合法的。
2021-04-13 21:36:15

新的 Google DFP 广告管理系统“标签”专门允许“针对 AJAX 进行广告刷新”

刷新

pubService.refresh(slots) 使用新广告刷新页面上指定的插槽数组。

参数:

数组插槽 - 要刷新的可选插槽数组。如果未提供,则刷新所有广告位。例子:

var slot1 = googletag.defineUnit("/1234567/leaderboard", [728, 90], "div-1").addService(googletag.pubads());

var slot2 = googletag.defineUnit("/1234567/skyscraper", [160, 600], "div-2").addService(googletag.pubads());

// 刷新调用为每个广告位获取一个新广告

googletag.pubads().refresh([slot1, slot2]); http://support.google.com/dfp_sb/bin/answer.py?hl=zh-CN&answer=2372721&expand=pubservice_details#refresh

+1,虽然这不是 AdSense,但它确实提供了一个不错的选择。我很高兴他们把这个带回来了!它消失了一段时间。
2021-03-21 21:36:15
以上仅在使用异步代码初始化时才有效。请参考这篇文章:support.google.com/dfp_sb/answer/3058726?hl=en
2021-04-06 21:36:15
我使用一个实时板球运动应用程序,每次击球时都会刷新广告。和电视没什么区别。
2021-04-12 21:36:15
仅供参考 - DFP 不支持 AdSense 链接单元(15 像素高的单元)。它仅支持广告单元。
2021-04-12 21:36:15

我知道我参加聚会晚了一年半,但是......广告的问题可能在于他们正在使用document.write(广告服务器因此而臭名昭着,但我不知道 AdSense 是否使用它或不。)

如果是这种情况,我有一个可以提供帮助的库:writeCapture.js例子:

$('#ads').writeCapture().html('<script src="whatever-your-adsense-code-is"> </script>');

那是使用 jQuery,但也有一个独立版本。

至于是否违反了TOS... Gmail 会动态更改广告,所以不会那么糟糕。只要内容也在变化,我觉得还可以。

你没有迟到(我真的迟到了)。我会立即尝试您的脚本,因为我遇到了同样的问题,无法使用 Adsense 块刷新 div。
2021-04-04 21:36:15

您可以使用以下代码刷新 Google 广告位。把这个放在你要刷新广告的 JS 函数中。它应该刷新页面上的所有广告。

if ( undefined !== googletag ) {
  googletag.pubads().refresh();
}

Google Ad Manager 帮助 - 无需刷新页面即可重新加载广告

只需将广告包含在您通过 ajax 加载的页面中。通过ajax逐页加载文件中的广告没有任何问题。

如果我加载包含一些内容和广告的 Read.inc 单击页面上的某些内容,它会将您带到包含广告内容的 Make.inc。

那有什么问题?那是有机的。将广告作为内容的一部分加载。

这与单击链接相同。

我还没有真正尝试过这个,但这当然看起来合乎逻辑。

这不适用于 AdSense。每页最多加载 3 个广告。您需要以某种方式卸载没有 API 的旧广告。
2021-03-14 21:36:15