facebook连接javascript sdk无法在IE中运行?

时间:2013-04-13 19:46:25

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

我用javascript sdk为我的网站开发了一个facebook连接应用程序。它适用于除IE以外的所有浏览器。

在IE中,有时不会在用户点击“登录”按钮时调用测试API函数。登录窗口弹出窗口,当用户输入用户名和密码时,应调用testAPI函数。但有时函数调用不起作用。但有时如果我刷新浏览器再试一次就可以了。

这里有没有人面临这类问题。 以下是我的javascript代码:

window.fbAsyncInit = function() {
    FB.init({
      appId      : '', // App ID
      channelUrl : '//localhost/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });
    FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
      // connected
      testAPI();
    } else if (response.status === 'not_authorized') {
      // not_authorized
      login();
    } else {
      // not_logged_in
      login();
    }
  });

    // Additional init code here

  };



  function login() { //alert("test");
    FB.login(function(response) {
        if (response.authResponse) {
            // connected
          testAPI();
        } else {
            // cancelled
        }
    }, { scope: 'email' });
    }

  function testAPI() {
    //document.write ("tet");
    console.log('Welcome!  Fetching your information.... ');
    FB.api('/me', function(response) {

        //document.write("sdfs");
        //document.write(response.name);
        var test = response.first_name; //alert(test);
        console.log('Good to see you, ' + response.first_name + '.');
        console.log('Good to see you, ' + response.last_name + '.');
        console.log('Good to see you, ' + response.id + '.');
        console.log('Good to see you, ' + response.email + '.');
       // console.log(response);
    });
  }

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));

1 个答案:

答案 0 :(得分:4)

问题是IE不支持控制台对象,如果你打开Internet Explorer开发者工具,支持控制台对象,那就是愚蠢的事情。

因此,只需删除所有console.log行,它们在您打开开发人员工具时就可以工作,但如果关闭开发人员工具则无法工作。这是如此愚蠢,使调试更加困难。

而是尝试使用警报。

您可以在此处阅读更好的解释:

Does IE9 support console.log, and is it a real function?