如何使用纯JavaScript来确定Facebook / Twitter是否被阻止?

时间:2014-01-12 06:28:04

标签: javascript

像中国这样的国家正在阻止Facebook / Twitter。如何使用JavaScript检查网站是否无法访问?

更新

我在网页上添加了“分享到Facebook”按钮。 50%的访客来自中国,50%来自中国以外。

对于那些中国游客来说,他们永远不会看到Facebook按钮,因为它被阻止了。如果我检测到Facebook被阻止,我想使用$.hide()$.empty()删除相关的HTML。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

您可以检查加载facebook SDK是否在中国(//connect.facebook.net/en_UK/all.js

中被阻止

如果是这种情况,那么你可以这样做:

  $.getScript('//connect.facebook.net/en_UK/all.js')
  .success(function(){
        // do something if facebook is available 
  });

您需要注意,因为如果要对fail案例进行回调,则需要定义超时。我需要稍后检查正确的设置,但目前我没有时间。

修改

根据funkybro的评论,最好做一个JSONP请求。加载API会注入一些您可能不需要的代码。 所以请求例如:

$.getJSON('https://graph.facebook.com/feed?callback=?')
.success(function(){
     // do something if facebook is available 
});

请求将包含失败代码,因为您未在图形节点提供,但知道您从Facebook收到错误消息意味着客户端可以访问该错误消息。

答案 1 :(得分:0)

像这样使用jQuery.get

$.get("http://facebook.com").fail(function() {
    $(...).hide()
}).done(function() {
    $(...).show()
})

请注意,这是一个跨站点请求,除非您禁用该浏览器功能,否则会因安全原因而失败。

如果您无法做到这一点,我建议您使用GeoIP或类似技术来确定用户来源。