1

У меня есть эта кнопка:Facebook Войти всплывающее окно заблокировано в IE 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(',') 
      }); 
     } 
    }); 
} 

I Следуйте этому правилу Facebook:

Вызов FB.login приводит к тому, что JS SDK пытается открыть всплывающее окно . Таким образом, этот метод следует вызывать только после того, как пользователь нажмет событие, иначе всплывающее окно будет заблокировано большинством браузеров.

И мой сайт по-прежнему получает всплывающее окно в Facebook, заблокированное в IE9. Есть идеи, как это решить? Любые идеи, как другие люди делают это, не блокируя их скрипты?

ответ

6

Попробуйте следующее:

  • Fetch статус входа пользователя.
  • Если пользователь не выполнил вход в систему, отобразите кнопку входа в систему.
  • Щелкните правой кнопкой мыши функцию FB.login.

В вашей реализации FB.login не вызывается непосредственно после взаимодействия с пользователем, а как часть функции обратного вызова FB.getLoginStatus. Я предполагаю, что это заставляет IE блокировать всплывающее окно.

+0

Спасибо - работает как шарм! –