5

我有一个网站,它集成了一个粉丝盒和一些来自 facebook 的其他东西。为了让一切看起来正确,我实现了 FBML,如下所示:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">

它实际上工作得很好,除了我发现我客户的公司对员工进行了封锁,因此他们无法访问 Facebook。但是,这会导致站点崩溃并且无法完全加载,因为防火墙不允许该站点上的 FB 代码正确触发。

由于我没有这个块,我无法远程复制它,并且无法准确指出它在做什么导致它显示不正确。

简而言之,我可以在代码中实现一些东西来检查 FB 是否可访问,如果是则只触发 fbml?我主要为该站点使用 PHP 和 Jquery。

提前致谢。

编辑:根据要求提供代码片段

从一开始就:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">

然后在页面中调用一个fanbox:

<div id="fbbox">
    <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
        <div id="fb-root">
            <fb:fan profile_id="xxxxxxxx" width="235" height="200"  connections="12" stream="false" header="false" css="http://www.xxxx.com/xxxx.css?33" ></fb:fan>
        </div>
    <script>
    <!--
        window.fbAsyncInit = function() {
            FB.init({appId: 'xxxxxxx', status: true, cookie: false, xfbml: true});
        };
        (function() {
            var e = document.createElement('script'); e.async = true;
            e.src = document.location.protocol +
            '//connect.facebook.net/en_US/all.js';
            document.getElementById('fb-root').appendChild(e);
        }());
    -->
    </script>
</div>      

我已经删除了一些特定的设置,但我可以向你保证这些在实际代码中是正确的。

4

2 回答 2

2

如果用户屏蔽了 facebook.com,则社交插件无法加载 anf,因此不会在您的网站上呈现。您应该检查插件是否加载,以及它们是否没有将内容替换为允许您的站点在没有它们的情况下继续运行的内容。

于 2011-08-07T15:33:21.080 回答
0

取决于网站被阻止的方式。您可以从 facebook 加载一个小图像,然后在 javascript 中检查尺寸。所以你看看他们是否正确。为此,我建议使用您从 api 文档获得的个人资料图片的永久 url,因为它不会更改并且始终提供相同大小的图像(根据文档)。

例如: http: //graph.facebook.com/joseph.hopfgartner/picture

您还可以使用 facebook 跨站点脚本接收器。

另一种可能性是在 iframe 中从 facebook 加载某些内容。location 属性将(作为唯一属性)可由您的站点读取。您可以使用将被重定向的 url(例如个人资料图片 url)。

但是这是为了回答您的问题,但我认为这不是解决方案。如果某些资源被阻止,您的网站真的不应该“不加载”!

您的 html 属性不会导致这种情况,因此您搞砸了其他事情

您能否提供更多代码或有关您的实现的链接?

于 2011-01-11T19:53:47.003 回答