如何从外部网址检查iframe的内容

时间:2011-05-04 20:40:16

标签: javascript facebook-iframe

我想在我的网站上使用Facebook的Like按钮。

每个人都知道这很简单,但我对我们国家的审查存在疑问。 Facebook在我们国家受到审查,如果我使用简单的iframe,那些无法访问Facebook(无法通过审查)的人将会看到我不想要的阻止页面。

所以我想检查加载的地址是否为Facebook显示iframe其他(他们将被重定向到另一个网站)隐藏iframe

有什么方法可以让我找到这个吗?我的意思是地址,内容或身份等等。


这是我的代码:

<html>
    <head>
    <title>facebook test</title>
    <style>
    .facebook{
        display:none;
        }
    </style> 
    <script type="text/javascript" src="jquery.js"></script>

    </head>
    <script type="text/javascript">
    $.ajax({
        url: 'https://graph.facebook.com/btaylor?callback=?',
        dataType: 'json',
        success: function(data) {
            $(".faceboock").show();
           // alert('success - facebook works');
           // alert('data = ' + JSON.stringify(data));
        },
        error: function() {
            alert('error - facebook fails');
        }
    });
    </script>

    <div class="faceboock">
    <iframe src="http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fpages%2Fmypage%2F152215541478267&amp;width=292&amp;colorscheme=light&amp;show_faces=true&amp;stream=true&amp;header=true&amp;height=427" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:292px; height:427px;" allowTransparency="true"></iframe>
    </div>

当客户端访问facebook时,它可以正常工作,我的意思是“成功:功能”有效,但错误功能不起作用。

问题是当json从未回复时无法访问facebook。

有没有办法为响应或其他任何事情设置超时以处理错误?

1 个答案:

答案 0 :(得分:1)

您无法检查与您的代码不在同一域中的iframe的内容。

请参阅Same Origin Policy

    可以无限制地检查
  • iframe.src ,但重定向发生时不会更改
  • 由于上述安全限制,
  • iframe.contentWindow.location.href 会在重定向发生时更改,但在您的情况下无法访问

我能想到的唯一方法就是测试:

  1. 对其中一个Facebook API进行JSONP调用(JSONP没有域名限制)
  2. 检查回复
    如果这些JSONP调用被重定向,那么它很可能会抛出异常而不是返回预期的值(因为它会尝试解析为javascript的响应,这很可能是一个fullhtml页面)。
  3. 这是使用jQuery进行JSONP调用的working example 它可以在我的位置工作,你可以测试它,看看你是否收到错误警告? 您也可以在浏览器中访问示例中的网址。如果facebook.com被重定向,但是这个不是,你必须找到其他方法来检查它...