如何在JS中捕获403禁止错误?

时间:2012-03-06 18:26:21

标签: javascript facebook facebook-javascript-sdk

如果GET失败,我试图破解一下这个facebook javascript代码来调用其他js。

我有这样的事情:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/yi_YI/all.js#xfbml=1&appId=###";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="###" data-num-posts="10" data-width="646"></div>

其中403禁止(/* Not a valid locale. */)。当它做这样的事情时,我希望能够加载en_US facebook sdk。所以,我试过了:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/yi_YI/all.js#xfbml=1&appId=###";
  try { fjs.parentNode.insertBefore(js, fjs); }
  catch(err) {
      js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=###";
      fjs.parentNode.insertBefore(js, fjs);
  }
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="###" data-num-posts="10" data-width="646"></div>

但是,它不起作用,继续获得403 Forbidden,就像trycatch(err)不起作用一样。

2 个答案:

答案 0 :(得分:2)

您无法获取跨域请求的HTTP响应状态。

您获得403的原因是因为Facebook不支持yi_YI作为区域设置 - 您将始终获得403.您请求的区域设置必须位于{ {3}}

答案 1 :(得分:0)

使用脚本的onerror方法:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/yi_YI/all.js#xfbml=1&appId=###";

  //handle loading error 
  js.onerror = function(){alert("script loading error")};

  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="###" data-num-posts="10" data-width="646"></div>