如您所知,Facebook 在许多国家/地区都被过滤,如果我们在我们的页面中放置“Like”按钮,他们将看到来自其互联网提供商的“ACCESS DENIED”消息,而不是“Like”按钮。所以问题是,我可以检测用户是否可以查看 Facebook 吗?所以如果用户可以访问 Facebook 并且它没有被过滤,我只会显示 Like 按钮。
谢谢
如您所知,Facebook 在许多国家/地区都被过滤,如果我们在我们的页面中放置“Like”按钮,他们将看到来自其互联网提供商的“ACCESS DENIED”消息,而不是“Like”按钮。所以问题是,我可以检测用户是否可以查看 Facebook 吗?所以如果用户可以访问 Facebook 并且它没有被过滤,我只会显示 Like 按钮。
谢谢
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>
我想你可以在类似按钮 iframe 上设置一个非常小的宽度和高度,刚好够按钮本身,并希望任何“访问被拒绝”消息有足够的填充在 iframe 的视口中不可见!:)
另一种方法可能是“ping”Facebook,例如发出 AJAX 请求并查看响应是什么。希望来自 ISP 的任何被阻止的响应都包含 HTTP 403 状态代码或其他合理的内容,但如果不是,您必须抓取返回的 HTML 并尝试自己确定您看到的是 Facebook 还是错误页面,然后决定是否是否呈现类似按钮。
使用 Facebook javascript 库:http: //developers.facebook.com/docs/reference/javascript/
并使用 FB.getLoginStatus(...) 函数来检查并决定您希望您的应用程序做什么。如果他们已登录或未登录(connected
或not_authorized
),则他们已登录 facebook,您可以显示您的点赞按钮。如果状态是unknown
他们尚未登录但可以看到 Facebook。
如果 facebook 脚本没有加载或返回任何值,那么 facebook 可能被阻止并且您不想显示您的喜欢按钮。
注意:您还需要使用 facebook 创建一个应用程序 ID 以将您的 javascript 链接到。