2012-05-10 112 views
0

我在做什麼錯了? - 我試圖從facebook的iframe選項卡抓取用戶的語言環境,以顯示基於位置的相關內容。Facebook獲取區域設置

<script type="text/javascript"> 
     (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/en_US/all.js#xfbml=1&appId=" + 'MY APP ID'; 
      fjs.parentNode.insertBefore(js, fjs); 
     } (document, 'script', 'facebook-jssdk')); 

     window.fbAsyncInit = function() { 
      if (location.protocol == 'https:') { 
       FB._https = true; 
      }; 
      FB.init({ 
       appId: 'MY APP ID', 
       status : false, 
       cookie : false, 
       xfbml : true, 
      width: 810 
      }); 
      FB.Canvas.scrollTo(0,0); 
      FB.Canvas.setAutoGrow(); 
     } 
</script> 
<script> 
FB.login(function(response) { 
    if (response.authResponse) { 
     if ($.data.get('user').get('locale') = "en_GB") { 
      $("a").attr("href", "URL"); 
     } 
    } 
}); 
</script> 
+0

你看到了什麼錯誤? – Dhiraj

+0

我沒有看到Firebug中的任何錯誤。 – user1381806

回答

0

我不知道很多有關jQuery的,但這裏的東西應該工作:

FB.login(function(response) { 
    if (response.authResponse && response.authResponse.user.locale == "en_GB") { 
     $("a").attr("href", "URL"); 
    } 
}); 

編輯

哦,是的。 fb sdk的加載是異步的,因此只有在調用fbAsyncInit方法後才需要使用FB名稱空間。 試試這個:

window.fbAsyncInit = function() { 
    if (location.protocol == 'https:') { 
     FB._https = true; 
    }; 
    FB.init({ 
     appId: 'MY APP ID', 
     status : false, 
     cookie : false, 
     xfbml : true, 
     width: 810 
    }); 
    FB.Canvas.scrollTo(0,0); 
    FB.Canvas.setAutoGrow(); 

    FB.login(function(response) { 
     if (response.authResponse && response.authResponse.user.locale == "en_GB") { 
      $("a").attr("href", "URL"); 
     } 
    }); 
} 

(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/en_US/all.js#xfbml=1&appId=" + 'MY APP ID'; 
    fjs.parentNode.insertBefore(js, fjs); 
} (document, 'script', 'facebook-jssdk')); 

要知道,的FB.login試圖彈出一個新窗口,因爲在這種代碼的方法不被稱爲是由於用戶操作,瀏覽器可能會阻止彈出窗口。

+0

我得到FB沒有定義:( – user1381806

+0

對,查看我修改後的答案 –

+0

AHHH現在「FB.init已經被調用 - 這可能表明有問題」 – user1381806