fb:喜欢当被要求登录IE时不起作用

时间:2012-04-23 08:30:34

标签: javascript popup facebook-like facebook-social-plugins

我正在将Facebook Like Button添加到我的网站。

我已将以下内容添加到我的aspx页面中:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
      FB.init({
          appId: 'ID',
          status: true,
          cookie: true,
          xfbml: true  // parse XFBML
      });
  };

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

这是html标记:

xmlns:fb="http://www.facebook.com/2008/fbml"   xmlns:og="http://ogp.me/ns#"  prefix="og: http://ogp.me/ns#" 

这就像我一样:

<fb:like  send="false" layout="standard" width="350" style="height:22px;" show_faces="false" action="like" colorscheme="light"></fb:like>

我确实为OpenGraph添加了元标记。

在所有浏览器上测试时,它都能正常工作。如果没有登录Facebook,您需要登录以查看该项目,弹出窗口会出现,并在您输入正确的用户名和密码后关闭。

但在IE(9)中会出现一个窗口,在我输入用户名和密码后,它会重定向到此链接:http://www.facebook.com/connect/connect_to_external_page_reload.html

这是一个空白页面,之后没有任何事情发生,它没有关闭,我不喜欢任何项目。

即使我已经在IE上登录Facebook之前点击了类似内容,我仍然可以输入用户名和密码。

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

让我在IE中为我工作的一切花了一整天。 最后,这就是我所做的。

  1. 在我的页面开头,我添加了以下内容

     <html lang="en" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#">
    
  2. 我添加了facebook喜欢并使用XFBML格式发送按钮(出于某种原因我无法使HTML 5版本工作) 注意:我还必须单独添加它们。出于某种原因,当我没有使用FB时:发送并使用FB:像send =“true”它在IE 10中不起作用。如果你只想要那样不要添加FB:发送行。

     <fb:like href="http://www.domain.com" send="false" layout="button_count" width="60" show_faces="false" action="like" font=""></fb:like>
    
     <fb:send href="http://www.domain.com"></fb:send>
    
  3. 我将脚本添加到页面

    <div id="fb-root"></div>`
    <script> (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_US/all.js";
    fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk')); </script>
    
  4. 我添加了channelUrl以确保它在IE 8&amp; 9

    <script>
    window.fbAsyncInit = function () { //fbAsyncInit prevents call of FB.getLoginStatus before the SDK is loaded and/or initialized
        FB.init({
            appId: "You app ID here bunch of digits",
            status: true, // check login status
            cookie: true, // enable cookies to allow server to access session,
            xfbml: true, // enable XFBML and social plugins
            oauth: true, // enable OAuth 2.0
            channelUrl: 'http://channel.html' //custom channel
        });
    };
    

  5. 使用以下内容

    创建了Channel.html文件
    <script src="//connect.facebook.net/en_US/all.js"></script>
    

答案 1 :(得分:0)

我遇到了同样的问题。我发现在IE9中禁用保护模式设置可以解决问题。您可以在Internet选项上找到它 - &gt;安全 - &gt;互联网 - &gt;启用保护模式复选框。如果有帮助,请告诉我。