javascript - 如何从外部网址检查 Iframe 的内容

标签 javascript facebook-iframe

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

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

所以我想检查加载的地址是否是 Facebook 向他们显示 iframe 否则(他们将被重定向到另一个网站)隐藏 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 永远不会响应。

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

最佳答案

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

参见 Same Origin Policy

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

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

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

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

关于javascript - 如何从外部网址检查 Iframe 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889585/

相关文章:

javascript - AngularJS ngHide ngShow 在 IE 中反转

javascript - 我该如何修复这个下拉菜单?

google-app-engine - 为什么这个嵌入在 iframe 的 facebook 应用程序中的 XFBML 标记不显示任何内容?

ssl - 购买 SSL 证书以使用我的应用程序通过 HTTPS 导航时,我应该设置什么通用名称?

Facebook JS SDK : Check permissions before Login PopUp

css - 像框图像宽度

javascript - 从 Typescript 类型/接口(interface)生成 Joi 模式

javascript - 回调引用和继承javascript

javascript - Facebook AppRunner 如何运作?

javascript - 来回移动 div