我有一个网站,整合了一个风扇盒和其他一些来自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>
我已经xxx了解了一些特定的设置,但我可以向你保证这些在实际代码中是正确的。
答案 0 :(得分:2)
如果facebook.com被用户阻止,社交插件canot加载anf因此将无法在您的网站上呈现。您应该检查插件是否加载,以及它们是否不会用允许您的网站在没有它们的情况下继续运行的内容替换内容。
答案 1 :(得分:0)
取决于网站的阻止方式。 你可以从Facebook加载一个小图像,然后检查javascript中的维度。所以你看他们是否证明是正确的。 为此,我建议您使用您从api文档中获取的个人资料图片的永久网址,因为它不会更改并始终提供相同大小的图像(根据文档)。
ex:http://graph.facebook.com/joseph.hopfgartner/picture
你也可以使用facebook跨站点脚本接收器。
另一种可能性是在iframe中从facebook加载一些东西。 location属性将(作为唯一的属性)可由您的站点读取。您可以使用将重定向的网址(例如个人资料图片网址)。
然而这是回答你的问题,但我认为它不是一个解决方案。如果某些资源被阻止,您的网站应该“不加载”!
你的html属性不能导致这种情况,所以你搞砸了别的东西
您可以在实施中提供更多代码或链接吗?