Javascript Facebook登录按钮事件在IE9中首次未触发

Javascript Facebook登录按钮事件在IE9中首次未触发,javascript,jquery,facebook-graph-api,facebook-login,Javascript,Jquery,Facebook Graph Api,Facebook Login,我在一个页面中添加了一个定制的facebook登录按钮,并在该点击事件中调用了FB.login() 它在除IE9和IE8之外的所有浏览器中都可以正常工作,问题是当我第一次打开我的站点并单击登录按钮时,没有弹出窗口出现。一旦我刷新我的页面并点击按钮,弹出窗口就会出现 下面是我的代码: <script type="text/javascript"> window.fbAsyncInit = function() { FB.init({ appId: 'APPID',

我在一个页面中添加了一个定制的facebook登录按钮,并在该点击事件中调用了FB.login()

它在除IE9和IE8之外的所有浏览器中都可以正常工作,问题是当我第一次打开我的站点并单击登录按钮时,没有弹出窗口出现。一旦我刷新我的页面并点击按钮,弹出窗口就会出现

下面是我的代码:

<script type="text/javascript">
window.fbAsyncInit = function() {
      FB.init({
  appId: 'APPID',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true
      });
  $("#fb").click(function () {

           FB.login(function(response) {//calling facebook login 

          }, {scope: 'user_photos,email,user_birthday,user_likes,user_activities,read_stream,user_religion_politics,user_relationships,user_education_history,user_work_history,user_hometown,user_location'});
  });

};
     (function(d){
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {
       //alert("k");
       return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     }(document));

</script>
 <input type="button" class="fb" id="fb" />

window.fbAsyninit=函数(){
FB.init({
appId:'appId',
状态:正确,
曲奇:是的,
xfbml:是的,
真的吗
});
$(“#fb”)。单击(函数(){
FB.login(函数(响应){//调用facebook登录
},{范围:'用户照片、电子邮件、用户生日、用户喜好、用户活动、阅读流、用户宗教政治、用户关系、用户教育史、用户工作史、用户家乡、用户所在地'});
});
};
(职能(d){
var js,id='facebook jssdk';if(d.getElementById(id)){
//警报(“k”);
返回;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
d、 getElementsByTagName('head')[0].appendChild(js);
}(文件);

我不知道我是否正确,但我认为最初facebook对象没有被创建,这就是登录窗口没有出现的原因。

你有
点击事件被添加到facebook
异步
上的
#fb
输入中。您无法确定这将在加载输入后运行

换句话说,您无法保证执行的顺序,即您构建代码的方式,因为
click
事件添加到回调中,并且该回调可能在DOM(以及
input
元素)完全加载之前被调用

尝试在代码的按钮后添加事件。或者,进行调查,延迟javascript代码的某些部分执行,直到DOM完全加载