Javascript 如何仅在我的网站未包含在iFrame中时显示adsense?

Javascript 如何仅在我的网站未包含在iFrame中时显示adsense?,javascript,jquery,facebook,adsense,Javascript,Jquery,Facebook,Adsense,我有一个网站,也是Facebook上的画布应用程序。根据FB政策,我不能在画布页面上显示Adsense广告。此外,根据谷歌Adsense政策,我不能在iFrames中显示Adsense,FB使用iFrames将我的网站显示为画布应用程序。我的网站使用Adsense来赚钱 我需要一个简单的解决方案来呈现我的Adsense广告只有当我的网站不是作为画布应用程序或通过任何其他方式iframed 我尝试使用jquery并做了以下工作 if (window==window.top) { $.get

我有一个网站,也是Facebook上的画布应用程序。根据FB政策,我不能在画布页面上显示Adsense广告。此外,根据谷歌Adsense政策,我不能在iFrames中显示Adsense,FB使用iFrames将我的网站显示为画布应用程序。我的网站使用Adsense来赚钱

我需要一个简单的解决方案来呈现我的Adsense广告只有当我的网站不是作为画布应用程序或通过任何其他方式iframed

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

if (window==window.top) {
    $.getScript("show_ads.js");
}
但无论如何,这并不意味着这些广告。show_ads.js是谷歌提供的Adsense广告渲染脚本

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

Try

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

尝试以下方法加载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);
}

您是否尝试过
window.parent==null
?这意味着您不在iframe中。@Diego-
窗口。父级
永远不会为
null
。在顶层框架中,
window.parent==window
…这或多或少就是问题中要检查的内容。我怀疑您的问题是
$.getScript(“show_ads.js”)
不起作用,但我们看不到show_ads.js中的代码。show_ads.js是在Google adsense脚本中执行的,用于呈现广告。如果使用Google adsense脚本,它有两个部分。第一部分定义广告单元,第二部分(always show_ads.js)呈现广告单元。如果页面由不同的来源构建,则会引发异常,脚本将终止。如果它在测试是否应该包含广告后做了任何事情,那么它就会崩溃。为什么要用
parent
替换
top
或添加
location
来帮助解决这个问题呢?当它在iframe中时,你能使用css选择器来隐藏它吗?例如,在不知道您的实际类别和id的情况下,FB-#FB.adsense{display:none;}@Quentin上的:normal-.adsense{display:block;}如果它抛出一个异常,则可以捕获该异常并将其视为“是的,我们在iframe中,不显示adsense”。因此,它可以工作。@DrCord将修复FB端,但由于无效的印象,它仍然会对adsense TOS不利。