2012-06-22 214 views
1

我有這樣的按鈕:阻塞在IE Facebook登錄彈出9

<img src="static/img/facebook_button.png" id="login-fb" onclick="login();" /> 

我也有這個腳本:

最後,我有這樣的功能:

function login() 
{ 
    facebookPerms = [ 
     'user_photos', 'email', 'offline_access', 'user_relationships', 'read_stream', 
     'user_about_me', 'user_birthday', 'user_education_history', //'publish_stream', 
     'user_hometown', 'user_interests', 'user_location', 'user_likes', 
     'user_religion_politics', 'user_activities', 'user_work_history' 
    ]; 
    //Get the facebook login status 
    FB.getLoginStatus(function(response) { 
     if (response.session) { 
      // logged in and connected user, someone you know 
      ajaxLogin(); 
     } else { 
      //Display the facebook login dialog 
      FB.login(function(response) { 
       if (response.authResponse) { 
        // user is logged in and granted some permissions. 
        // perms is a comma separated list of granted permissions 
        ajaxLogin(); 
       } else { 
        // user is not logged in, display the error dialog box 
        errorNotLogged(); 
       } 
      }, { 
       //Ask for permissions of Facebook 
       scope: facebookPerms.join(',') 
      }); 
     } 
    }); 
} 

我我遵循這個Facebook規則:

調用FB.login導致JS SDK嘗試打開彈出窗口 。因此,只有在用戶點擊 事件後才能調用此方法,否則彈出窗口將被大多數瀏覽器阻止。

而我的網站仍然得到它的Facebook彈出窗口阻止在IE9。任何想法如何解決這個問題?任何其他人如何做到這一點,而不會阻止他們的腳本?

回答

6

嘗試以下操作:

  • 獲取用戶的登錄狀態。
  • 如果用戶未登錄,請顯示登錄按鈕。
  • 點擊直接調用FB.login函數。

在您的實現中FB.login不是在用戶交互後直接調用,而是作爲FB.getLoginStatus的回調函數的一部分調用。我想這會導致IE阻止彈出窗口。

+0

謝謝 - 作品像魅力! –