【问题标题】:Show a div if only google ad is present [closed]如果只有谷歌广告存在,则显示一个 div [关闭]
【发布时间】:2012-08-29 15:21:26
【问题描述】:

使用 javascript,我需要显示 DIV,但前提是它包含 Google 广告。这是我通过 Google 使用的代码:

<div id='div-gpt-ad-1346196436229-0'>
    <script type='text/javascript'>
        googletag.cmd.push(function() { googletag.display('div-gpt-ad-1346196436229-0'); });
    </script>
</div>

上述代码中的 DIV ID 是由 Google 为广告位生成的。

我能得到任何想法或方向吗?诚然,我在 javascripting 世界中很弱,所以请保持温柔。 :)

【问题讨论】:

  • 问题的完整背景是什么?在您的情况下还有哪些其他可能的情况?即 div 还可能包含什么?
  • 只有在检测到谷歌广告时才需要显示该 div。 div 中唯一的其他内容就是样式。在我看来,这比我对 javascript 的“挑战”还要基本。
  • 这个问题被回答两年后,它被标记为太宽泛了?我认为这是具体的——如果存在 Google 广告,我需要知道如何显示 div。我需要更具体多少?
  • @86Stang 同意,我不明白这怎么可能太宽泛了。

标签: javascript html google-dfp


【解决方案1】:

像这样在你的标头代码中包含这个标签。

<script type='text/javascript'>
googletag.defineSlot('AdSlot-name', [AdSize], 
'div-gpt-ad-1346196436229-0').addService(googletag.pubads());
googletag.pubads().collapseEmptyDivs();
</script>

你添加的标签是:

googletag.pubads().collapseEmptyDivs();

【讨论】:

    【解决方案2】:

    有两种方法可以解决这个问题...如果没有广告,您可以改变思考方式并隐藏 div,使用 DFP API 中的collapseEmptyDivs 设置。

    如果你绝对必须从一个隐藏的 div 开始,然后只在它包含广告时才显示它,那就有点复杂了……如果你在页面上使用 jQuery,请查看我写的 plugin

    其他答案几乎是正确的,但它不像检查 iframe 那样简单......根据我的经验,无论广告是否实际显示,都会出现 iframe。在页面加载时检查 iframe 也不起作用,因为广告通常会在页面加载后呈现。

    您需要连接到 DFP 脚本并在触发 renderEnded 后检查广告的状态...使用上面的链接插件,您有两个可以轻松执行此操作的回调...插件还添加了一个类到 display-block 或 display-none 的广告单元 div,具体取决于是否找到广告......然后这些可以很容易地用于隐藏或显示带有 CSS 的 div。

    【讨论】:

      【解决方案3】:

      如果没有广告,DoubleClick 只会输出一个空字符串。我正在计算包​​含广告并据此隐藏的 div 中的子项数量。

      <script type="text/javascript">
          if($('#ad-id').children().length < 5)
          {
              $('#ad-id').hide();
          }
      </script>
      

      【讨论】:

        【解决方案4】:

        使用其他响应,您可以使用 jQuery 来检查元素的 iframe 内容

        if($('#div-gpt-ad-1346196436229-0').has('iframe'))
          $('#div-gpt-ad-1346196436229-0').show
        

        【讨论】:

        • 这段代码如何与我上面发布的代码相关联?我没有看到我猜想的总体逻辑。
        【解决方案5】:

        老问题,但我在 IE 中遇到了一个问题,当未能获得广告时,广告会加载空白的白色背景 iframe。以下代码处理 op 问题 + IE 修复,您必须将 collapseEmtpyDivs 设置为 true 并从最初显示的 adunit 元素开始:

        if( $(adUnit).css("display") == "none"  || $(adUnit).hasClass("display-none") )
            $(adUnit).remove();
        

        【讨论】:

          【解决方案6】:

          除了隐藏或显示广告投放的容器 div 之外,这可能是一种执行其他操作的方法。我知道这是题外话,但如果广告的存在决定了页面上的其他内容,比如一个项目是否应该绝对定位,还是浮动等等...... 就我而言,我在广告投放槽的顶部有一个视频播放器,我想更改其背景,只有当广告存在时。 ... 很老套的方法,似乎 应该 在 display() 完成后确定这个回调或响应请求......成功 / fali 等。

          【讨论】:

            【解决方案7】:

            基本上很简单

            通过他们的广告,谷歌正在使用一个完整的 html 文档和一个 iframe,因此页面已完成,您只需检查 div 是否包含“html”或“iframe”标签,如果是则显示它

            希望对你有帮助

            *我建议将广告放在具有预定义 id-s 的持有人 diws 中

            【讨论】:

            • 这对我来说没有任何意义......
            • 分页加载的时候,div基本是空的。页面加载后,有问题的 div 将通过 google js 由广告填充。因此,您检查可以在每个谷歌广告中找到的一些常量。这是 iframe 标记。因此,如果您在页面加载后使用 js 检查目标 div 的内容以获取 iframe tang,并且 js 返回 false,则表示 Google 广告尚未加载到 div 中,因此您隐藏 div,或将其隐藏.如果它返回 true,则将 div 的可见性更改为显示并完成。
            • 根据您所说的,您是否有一些代码位可以让我朝着正确的方向开始?再次——我遇到了javascript挑战。 :)
            • Google 将 iframe 放在那里,即使没有投放广告,您也可以在通常的广告位置获得一个大的白框。有没有办法解决这个问题?
            猜你喜欢
            • 2019-10-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-16
            • 1970-01-01
            相关资源
            最近更新 更多