2012-06-25 105 views
2

嗨,我在网上使用Facebook上的按钮。我所有的内容都是通过ajax加载的,我已经知道如果你想使用带有加载内容的Ajax按钮的Facebook,你应该使用FB.XFBML.parse()。我用过这个,它运行得很好,是Firefox和Chrome,但它不能在IE中工作。我正在使用IE 8进行检查。我已搜索解决方案,并发现here在我的html标记中添加xmlns:fb="http://www.facebook.com/2008/fbml"。我做了,但它尚未修复。我的代码看起来像FB.XFBML.parse在IE中不工作

layout.php 

<div id="fb-root" style="display:none"></div> 
    <script> 
     window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : 'APPID', // App ID 
      status  : true, // check login status 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true // parse XFBML 
     }); 

     // Additional initialization code here 
     }; 

     (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_GB/all.js#xfbml=1"; 
      fjs.parentNode.insertBefore(js, fjs); 
     }(document, 'script', 'facebook-jssdk')); 

    </script> 

这就是我如何使用XFBML.parse

$(".fblike").each(function(){ 
    FB.XFBML.parse($(this).get(0)); 
    //because having multiple likes button on same page. 
}); 

这里是我的喜欢按钮

<div class='fblike'><fb:like send='false' layout='button_count' width='100' show-faces='false' href='www.myurl.com?ref=facebook' ></fb:like></div> 

如何使其与IE8和IE9的工作?我错在哪里以及如何解决这个问题?

问候,

+0

可能重复http://stackoverflow.com/questions/3758846/facebook-login-like-fail-on-ie8 – Venu

+0

@ Venu我已经遵循了这些说明,但我的问题仍然存在? –

+0

你有没有试过Array.prototype.indexOf? – Venu

回答

6

以我的经验,如果你尝试运行FB.XFBML.parse()裹着东西是这个调用之前隐藏,它不会在IE和Firefox的工作。

这是行不通的:

<div id="wrapper" style="display:none"> 
    <fb:like id="like_button" ... ...></fb:like> 
</div> 

<script> 
FB.XFBML.parse(document.getElementById('like_button'), function() { 
    $('#wrapper').show(); 
}); 
</script> 

可以使用类似这个:

<div id="wrapper" style="display:block; height:0px; overflow:hidden;"> 
    <fb:like id="like_button" ... ...></fb:like> 
</div> 

<script> 
FB.XFBML.parse(document.getElementById('like_button'), function() { 
    $('#wrapper').animate({height:'30px'}, 300) 
}); 
</script> 

希望这可以帮助其他人。

1

这适用于所有浏览器(在IE6 +,Chrome,FF,Opera,Safari上测试)。

而不是显示一个隐藏的FB按钮,我动态地添加在DIV的包装,我想让它显示的FB按钮HTML代码:

<div id="fbWrapper"></div> 

<script> 
    $("#fbWrapper").append("<div class='fblike'><fb:like send='false' layout='button_count' width='100' show-faces='false' href='www.myurl.com?ref=facebook' ></fb:like></div>"); 
    FB.XFBML.parse($("#fbWrapper").get(0)); 
</script> 

或者,如果你想显示的以前里面的FB按钮隐藏面板,首先使面板可见,则追加FB按钮HTML代码:

<div id="myPanel" style="display: none"> 
    Follow us on Facebook: 
    <div id="fbWrapper"></div> 
</div> 

<script> 
    $("myPanel").show(); 
    $("#fbWrapper").append("<div class='fblike'><fb:like send='false' layout='button_count' width='100' show-faces='false' href='www.myurl.com?ref=facebook' ></fb:like></div>"); 
    FB.XFBML.parse($("#fbWrapper").get(0)); 
</script>