【问题标题】:How to display adsense only when my website is not enclosed in an iFrame?仅当我的网站未包含在 iFrame 中时如何显示 adsense?
【发布时间】:2013-02-04 19:27:53
【问题描述】:

我有一个网站,它也是 Facebook 上的画布应用程序。根据 FB 政策,我无法在画布页面上显示 Adsense 广告。此外,根据 Google Adsense 政策,我无法在 iFrames 中显示 Adsense,FB 使用它来将我的网站显示为画布应用程序。我的网站使用 Adsense 获利。

我需要一个简单的解决方案来仅在我的网站未将 iframe 设置为画布应用或通过任何其他方式时才呈现我的 Adsense 广告。

我尝试使用 jquery 并做了以下操作

if (window==window.top) {
    $.getScript("show_ads.js");
}

但这在任何情况下都不会呈现广告。 show_ads.js 是 Google 提供的 Adsense 广告渲染脚本。

我正在寻找一种不同的方法来解决这个问题。

【问题讨论】:

  • 你试过window.parent == null吗?这意味着您不在 iframe 中。
  • @Diego — window.parent 永远不会是 null。在顶层框架中,window.parent == window ... 或多或少是问题中要检查的内容。
  • 我怀疑你的问题是 $.getScript("show_ads.js"); 不起作用,但是我们在 show_ads.js 中看不到代码。
  • show_ads.js 是在 Google adsense 脚本中执行以呈现广告的内容。如果您使用 Google Adsense 脚本,它有两个部分。第一部分定义广告单元,第二部分(总是 show_ads.js)呈现它。

标签: javascript jquery facebook adsense


【解决方案1】:
Try

    var isInIframe = (window.parent !=null && window.location != window.parent.location) ? true : false;
        if (!isInIframe )
         loadScript("http://your.cdn.com/show_ads.js");

reference

试试这个来加载一个js文件:

function loadScript(url, callback){

    var script = document.createElement("script")
    script.type = "text/javascript";

    if (script.readyState){  //IE
        script.onreadystatechange = function(){
            if (script.readyState == "loaded" ||
                    script.readyState == "complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    } else {  //Others
        script.onload = function(){
            callback();
        };
    }

    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

【讨论】:

  • 如果页面由不同的来源构成,则会引发异常并且脚本将终止。如果它在测试是否应该包含广告之后执行任何操作,那么它将中断。
  • 为什么要用parent 代替top 或添加location 无论如何都有助于解决问题?
  • 当它在 iframe 中时,您可以使用 css 选择器将其隐藏吗?例如,在不知道您的实际分类和 ID 的情况下:正常 - FB 上的 .adsense{display: block;} - #FB .adsense{display: none;}
  • @Quentin 如果它抛出异常,可以捕获并视为“是的,我们在 iframe 中,不显示 adsense”。所以,它可以工作。
  • @DrCord 这将修复 FB 方面,但由于无效展示,它仍然会违反 adsense TOS。
猜你喜欢
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多