0

Facebook Connect コードがクリック イベントで実行されることを確認する必要がありますが、どのように試しても動作しません。それは単純なものでなければなりませんが、私はそれを理解することができません。これは私の最新の試みですが、 FB.Event.subscribe の後にコードにアラートを入れると、決して到達しません。コードは document.ready 内から実行されますが、クリック イベントで実行する必要があります。ライブ URL は、lovelyjubbly.info/en-GB/Gameplan です。

    <div class="facebookconnect">
            <div id="fb-root"></div>

            <script language="javascript" type="text/javascript" src="http://connect.facebook.net/@Thread.CurrentThread.CurrentUICulture.Name.Replace('-', '_')/all.js"></script>

            <script type="text/javascript">

                $(document).ready(function () {

                    window.FB.init({ appId: 'abc', status: true, cookie: true, xfbml: true });

                });

                function fbclick()
                {
                    FB.Event.subscribe('auth.login', function (response) {
                        alert("loggedin");
                        var isUserAuthenticated = @User.Identity.IsAuthenticated.ToString().ToLower();

                        if ((response.status == 'connected') && (isUserAuthenticated == false)){
                            window.location.href = '@Account.Urls.FacebookConnect()';
                        }
                    });
                }

            </script>

            <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/" + @Thread.CurrentThread.CurrentUICulture.Name.Replace('-', '_') + "/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

           <fb:login-button onclick="fbclick()" autologoutlink="false" perms="email" id="fbLogin">

           </fb:login-button>

        </div><br />

編集: live() メソッドを使用しても、まだ機能していないようです:

    <div class="facebookconnect">
            <div id="fb-root"></div>

            <script language="javascript" type="text/javascript" src="http://connect.facebook.net/@Thread.CurrentThread.CurrentUICulture.Name.Replace('-', '_')/all.js"></script>

            <script type="text/javascript">

                $(document).ready(function () {

                    window.FB.init({ appId: 'abc', status: true, cookie: true, xfbml: true });

                });

                $("#fbLogin").live("click", function(){ 
                    FB.Event.subscribe('auth.login', function (response) {
                        alert("loggedin");
                        var isUserAuthenticated = @User.Identity.IsAuthenticated.ToString().ToLower();

                        if ((response.status == 'connected') && (isUserAuthenticated == false)){
                            window.location.href = '@Account.Urls.FacebookConnect()';
                        }
                    });
                }); 


            </script>

            <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/" + @Thread.CurrentThread.CurrentUICulture.Name.Replace('-', '_') + "/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

           <fb:login-button autologoutlink="false" perms="email" id="fbLogin">

           </fb:login-button>

        </div><br />
4

1 に答える 1

1

使用する

$(yourselector).live('click', function() {
   //fb stuff
});

なぜこれが機能するのかはよく覚えていませんが、確かに機能しているようです。

于 2012-08-21T23:43:33.983 に答える