2012-03-06 36 views
0

GETが失敗した場合、このFacebookのJavaScriptコードをハックして他のjsに電話をかけようとしています。JSの403禁止されたエラーをキャッチするには?

<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を読み込めます。 trycatch(err)が動作していない場合と同様に、403は禁断得続ける、それが動作しない、

<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> 

をしかし:だから、私は試してみました。スクリプトのための方法は、onerror

答えて

2

あなたがクロスドメインリクエストのHTTP応答ステータスを取得することはできません。

Facebookはあなたが常にはあなたが要求するロケールがlist of supported locales上でなければならない403を取得するロケール–ようyi_YIをサポートしていないので、あなたが403を取得している理由があります。

+0

これはXML文書なので、アンロード可能なロケールをロードしようとする前に、簡単にポーリングできます。 – DMCS

+0

@DMCS、true。私はそれがロケールでSDKのURLを動的に生成しているのかハードコーディングしているかによって異なります。後者の場合は、使用するロケールが使用可能であることを確認するだけです。 – josh3736

+0

すごく、ありがとう!私は手でサポートされているロケールをfbで行ってきました。 – Hartator

0

使用:

<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> 
+0

これはInternet Explorer <9では機能しません。また、onerrorハンドラは、403とその他のエラー(FacebookやFacebookなどをブロックするネットワークの問題やコンテンツフィルタなど)を区別しません。 – josh3736

関連する問題