【问题标题】:How to check if anything is visible in a div如何检查div中是否可见任何内容
【发布时间】:2010-02-21 05:06:29
【问题描述】:

我的页面上有一个脚本,可将广告网络中的内容加载到 div 中。这个广告网络有 80% 的填充率,即它只在 80% 的时间投放广告,另外 20% 的时间不展示广告。可悲的是,广告网络没有给我回电告诉我它什么时候没有投放广告。因此,该 div 有时会显示广告,有时会显示为空白。

这在我的网站上看起来很可怕,让我变成了一只悲伤的熊猫。有没有办法检查 div 中是否有任何内容可见?如果我知道这一点,我就会知道何时显示 div,何时隐藏它。

这听起来像是一个很难解决的问题,但我想看看是否有任何解决方案。交给你了,大师们。

【问题讨论】:

  • 是提供空白的图像,还是不提供任何内容?
  • 这取决于 - 大多数广告脚本加载 other 广告脚本,当没有内容显示时似乎有两个大桶:1) 有一个 iframe(有时,iframe 在一个iframe) 带有一个空的 标签 2) 普通的空 div #1 似乎更普遍
  • 顺便说一下,它总是提供一张空白图片……但那是一个跟踪信标。示例内容的粘贴:

标签: javascript jquery html show-hide


【解决方案1】:

我认为最好的解决方案是寻找更可靠的广告网络。但是,您可以使用 jQuery 对象上的 length 属性来检查任何 DOM 元素是否存在。例如:

if (!$('#adframe img').length) {
  // the ad image doesn't exist, so do something to deal with it
}

这只是一个通用示例,因为我不知道您的广告标记的结构或有时缺少什么元素,但​​重点是使用 length 属性查看选择器匹配的元素数量。如果它没有找到该元素,则该值将为零,您可以使用它来执行一些操作。

【讨论】:

    【解决方案2】:

    这里假设 Div 可见性不是由广告设置的。这是 sudo 代码。

    1.) 使用 id 或 name 为 div 分配一个变量

    var myDiv=document.getElementsByName("divName");
    

    2.) 将 div 内部文本放入变量中

    var myAd = getInnerText(myDiv);
    

    3.) 检查内部 Text div 是否为空

    if(typeof(myAd) == '' || myAd == null)
    

    4.) 根据 DIV 标签之间的文本更改 DIV 的可见性。

    【讨论】:

      【解决方案3】:

      有一些实际的标记会有所帮助,但如果我没看错的话,你通常会有一个空的 div,然后有时会有一个 iframe 或嵌套的 iframe 或类似的可怕的东西。

      所以我会使用两个并发解决方案:首先,最简单的 jQuery 解决方案是:

      $("#ad-container div:empty").hide();
      

      (将 #ad-container div 替换为您使用的任何内容。)

      同时,对于那些不起作用的时候(讨厌的 iframe 和其他东西),使用 CSS 提供备用背景图片,也许可以宣传自己或只是让空间看起来更好。只是基本的,就像这样:

      #ad-container { background-image: url(...);background-repeat:none; }
      

      投放广告时,图片将被覆盖。如果没有,备份会在那里为您服务。

      【讨论】:

        【解决方案4】:

        广告投放成功后,IFrame 是否有图片标签?

        【讨论】:

          猜你喜欢
          • 2015-02-21
          • 1970-01-01
          • 2011-05-22
          • 1970-01-01
          • 2012-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多