如您所知,Facebook已在许多国家/地区进行过滤,如果我们在页面中添加“赞”按钮,则会在其互联网提供商处显示“拒绝访问”消息,而不是“赞”按钮。所以问题是,我可以检测用户是否可以查看Facebook吗?所以,如果用户可以访问Facebook并且未进行过滤,我只会显示“赞”按钮。
由于
答案 0 :(得分:3)
通过加载www.facebook.com
来测试是否可以访问域favicon.ico
,如果是,请显示iframe:
<iframe src="http://www.facebook.com/plugins/like.php" id="fbfm" style="display:none">
</iframe>
<script>
var fbicon = new Image();
fbicon.onload = function() {
document.getElementById("fbfm").style.display = "";
};
fbicon.src = "http://www.facebook.com/favicon.ico?" + Math.random();
</script>
答案 1 :(得分:1)
我猜你可以在if按钮上设置一个非常小的宽度和高度,对于按钮本身就足够了,并且希望任何“ACCESS DENIED”消息都有足够的填充在iframe的视口中不可见! :)
替代方案可能是“ping”Facebook,就像发出一个AJAX请求并看看响应是什么。 希望来自ISP的任何阻止响应都会包含HTTP 403状态代码,或者其他合理的东西,但如果不是,您必须抓取返回HTML并尝试自己确定是否看到Facebook或错误页面,然后决定是否渲染类似按钮。
答案 2 :(得分:0)
使用Facebook javascript库:http://developers.facebook.com/docs/reference/javascript/
并使用FB.getLoginStatus(...)函数来检查并确定您希望应用程序执行的操作。如果他们已登录或未登录(connected
或not_authorized
),那么他们会登录到Facebook并显示您喜欢的按钮。如果状态为unknown
,他们尚未登录,但可以看到Facebook。
如果Facebook脚本没有加载或返回任何值,那么Facebook可能会被阻止,您不想显示您喜欢的按钮。
注意:您还需要使用Facebook创建一个应用ID,以便将您的javascript链接到。
答案 3 :(得分:0)