2

如果访问者正在使用 adblock,我正在尝试显示一个 div。

我最初使用的是背景图像,但大多数用户实际上会在广告初始化之前看到该消息,即使他们没有阻止广告一两秒钟。

我搜索了网络和这个网站,似乎 javascript 是最好的解决方案。我遇到的唯一问题是,对于像我这样的小伙伴来说,这里的每个答案似乎都缺少一些关键信息。

所以我很好奇,具体来说,我将如何显示 div 来代替 adsense 广告?

到目前为止,我一直在尝试并取得一点成功的是查看广告容器是否没有高度,然后显示一个弹出窗口(从在线教程中获取代码)。但我不希望弹出窗口只是在与广告相同的位置显示 div。

<script type="text/javascript">
    function TestPage() {
        if ($('.ad').height() == 0)
             $('.adblocked').show();

    }

    $(TestPage);
</script>

以上内容无法显示 div,但它确实检测到广告何时被阻止,只是无法.adblocked在其位置显示该 div。

4

2 回答 2

2

Adblock 可能需要几秒钟来隐藏元素,所以设置一个超时,像这样。您可以增加延迟,但 3000 通常可以解决问题。

<script type="text/javascript">

function TestPage() {
 if (jQuery('.ad').height() == 0) {
  document.getElementById("test").className += " adblocked";
 }
}

jQuery( document ).ready(function() {
 window.setTimeout('TestPage()', 3000); 
});

</script>
于 2013-07-07T05:58:45.490 回答
1
<script type="text/javascript">
    function TestPage() {
        if (jQuery('.ad').height() == 0)
             document.getElementById("test").className += " adblocked";

    }

    jQuery(TestPage);
</script>

让它工作;几个教程的某些部分帮助我实现了目标。

如果其他人试图这样做,这就是我所做的:

这里的一些回复和在线教程建议尝试通过获取 adlibraryname 或等效名称来确定广告是否被“阻止”或未加载。我不知道如何找到它,所以我用高度做了。

我在调用的广告周围放置了一个 div,.ad并在上面的 jquery 函数中查看它的高度是否div为 0(未加载广告)。在同一个主广告框中(.ad被包裹在一个父 div 中,我们称之为#wrap)我把另一个div叫做#test.

在我的样式表中,我做了另一个div调用.adblocked,其中background-image包含一个很好的消息,用于阻止人们进行广告拦截。

因此,基本上当广告被屏蔽时,它会#test填充.adblocked.

这是一个小提琴: http: //jsfiddle.net/VZdzX/(更改高度.ad以查看)

.adblocked现在我唯一担心的是,如果实际广告没有被阻止但加载时间很长,这是否会调用...

于 2013-07-06T01:10:59.253 回答