【问题标题】:How to check Google publisher tag ad slot is empty or not?如何检查 Google 发布商标签广告位是否为空?
【发布时间】:2013-03-29 16:50:06
【问题描述】:

我正在使用 Google 发布商标签来获取广告。

如何检查我收到的是广告还是特定广告位的空广告。 我正在使用下面的代码。

googletag.defineSlot("/1234/travel", [[300,250],[300x600]], "div-gpt-ad-123456789-0"))


 <div id="div-gpt-ad-123456789-0" style="width: 728px; height: 90px">
  <script type="text/javascript">
      googletag.cmd.push(function() {
      googletag.display("div-gpt-ad-123456789-0");
      });
    </script>
  </div>

如何检查这个 div("div-gpt-ad-123456789-0") 是否包含广告?

【问题讨论】:

    标签: javascript jquery adsense google-dfp


    【解决方案1】:

    您是否尝试过使用 firebug 或 chrome web 检查器检查 div?如果加载正确,则 div 内部应该有一个 iframe,并且 iframe 内部会有一些带有广告素材的 html。

    您可以使用 DFP console 非常轻松地调试 DFP,以测试您的网页是否正确标记以及是否正在投放广告。

    【讨论】:

    • 嗨,谢谢你如何在技术上实现这一点。根据我的要求,我需要检查广告并需要显示广告,如果广告不存在,我需要显示默认广告或图片。请建议我如何进行此操作
    • 我遇到了同样的问题,所以我在这里开发了一个 jquery 插件来处理这个要求:github.com/coop182/jquery.dfp.js 如果您在页面上使用 jQuery,那么我的插件可以取代普通的 DFP 脚本。它允许您使用默认内容填充广告单元 div,默认内容可能是另一个广告或图像,但如果在 DFP 中找到该广告单元的广告,则广告将覆盖 div 的内容...如果您与我联系需要一个例子。
    • 您好,非常感谢。请提供示例,以便我可以获取有关此问题的一些信息。
    • 这里是一个例子......实际上它是两个例子。如果您查看源代码,页面上有 6 个广告,第二个广告将不会加载,因此仅使用广告 div 内的内容。第 5 个广告也不会加载,但通过检查 adunit 在尝试从谷歌加载它后是否为空白来加载此 div 的内容。 coop182.github.io/jquery.dfp.js/dfptests/notfound.html
    【解决方案2】:

    GPT API 提供了一个“SlotRenderEndedEvent”,当广告呈现(或者没有返回)时触发

    https://developers.google.com/doubleclick-gpt/reference

    您添加处理程序并检查 isEmpty 以确定是否已投放广告。

    此外,如果您为广告位启用了 CollapsEmptyDivs,则广告 div 将被 GPT 设置为 display:none,因此这也是没有返回任何内容的线索。

    【讨论】:

      【解决方案3】:

      你可以这样做:

      googletag.pubads().addEventListener('slotRenderEnded', function(event) {
          if (event.slot.getSlotElementId() == "div-gpt-ad-123456789-0") {
              var containsAd = !event.isEmpty;     
          }
      });
      

      【讨论】:

      • 嗨,由于某种原因,这并非每次都有效,大约 60% 的时间都失败了,你知道为什么吗?
      • 回答有点晚了。可能是您有第 3 方广告,通常 DFP 充当广告在提供回传时不为空,但回传可能为空。
      • 同意。广告重定向是一件棘手的事情。一旦将广告作为重定向投放,您就无法 100% 确定要显示的内容
      • 我可以删除这个事件监听器吗?比如 googletag.pubads().removeEventListener('slotRenderEnded')
      • 遗憾的是,没有 removeEventListener 记录在案:(
      【解决方案4】:

      您可以使用名为 Google Publisher Console 的屏幕调试工具来解决交付问题。使用“?googfc”作为查询字符串。 参考:https://support.google.com/dfp_premium/answer/2462712?hl=en

      【讨论】:

      • 不要将链接发布为答案,而是添加一些文本来解释此答案如何帮助 OP 解决当前问题。谢谢
      • 真的很有用!如果您正在调试与广告位相关的任何内容 - 请使用此工具。
      【解决方案5】:

      googletag.cmd.push(function () {
      		googletag.pubads().addEventListener('slotRenderEnded', function (event) {
      			if (event.isEmpty) {
      				var id = event.slot.getSlotElementId();
      				var x = document.getElementById(id);
      				if (x.parentElement.classList.contains("ad-slot")) {
      					x.parentElement.style.display = "none";
      				}				
      			}
      		});
      	});

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 2020-09-12
        • 1970-01-01
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多