2

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

众所周知,这很简单,但我对我们国家的审查制度有疑问。Facebook 在我国受到审查,如果我使用 simple iframe,无法访问 Facebook 的人(无法通过审查)将看到我不想看到的阻止页面。

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

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


这是我的代码:

<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 时起作用,我的意思是“成功:功能”有效,但错误功能无效。

问题是当 facebook 无法访问时,json 永远不会响应。

有没有办法设置响应超时或其他任何东西来处理错误?

4

1 回答 1

1

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

同源政策

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

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

  1. 对其中一个 Facebook API进行JSONP调用(JSONP 没有域限制)
  2. 检查响应
    如果这些 JSONP 调用也被重定向,那么它很可能会抛出异常而不是返回预期值(因为它会尝试将响应解析为 javascript 很可能是一个完整的 HTML 页面)

这是一个使用 jQuery 进行 JSONP 调用的工作示例。
它可以在我的位置工作,您可以对其进行测试并查看是否收到错误警报吗?
您也可以在浏览器中访问示例中的 url。如果 facebook.com 被重定向,但这个没有,那么你必须找到其他方法来检查它......

于 2011-05-04T21:03:04.520 回答