Javascript FB点击连接事件
我需要确保我的Facebook Connect代码在点击事件上运行,但无论我如何尝试,我都无法让它工作。它必须是一些简单的东西,但我就是想不出来。这是我最近的一次尝试,但是如果我在FB.Event.subscribe之后在代码中添加了一个警报,它永远不会到达。代码确实在document.ready中运行,但我需要它在单击事件中运行。实时URL是lovelyjubbly.info/en-GB/GameplanJavascript FB点击连接事件,javascript,facebook,asp.net-mvc-3,Javascript,Facebook,Asp.net Mvc 3,我需要确保我的Facebook Connect代码在点击事件上运行,但无论我如何尝试,我都无法让它工作。它必须是一些简单的东西,但我就是想不出来。这是我最近的一次尝试,但是如果我在FB.Event.subscribe之后在代码中添加了一个警报,它永远不会到达。代码确实在document.ready中运行,但我需要它在单击事件中运行。实时URL是lovelyjubbly.info/en-GB/Gameplan <div class="facebookconnect">
<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 />
$(文档).ready(函数(){
init({appId:'abc',状态:true,cookie:true,xfbml:true});
});
函数fbclick()
{
FB.Event.subscribe('auth.login',函数(响应){
警报(“loggedin”);
var isUserAuthenticated=@User.Identity.IsAuthenticated.ToString().ToLower();
if((response.status=='connected')&&(isUserAuthenticated==false)){
window.location.href='@Account.url.FacebookConnect()';
}
});
}
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“///connect.facebook.net/”+@Thread.CurrentThread.CurrentUICulture.Name.Replace('-','.'''''+')“/all.js#xfbml=1”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
编辑:使用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 />
$(文档).ready(函数(){
init({appId:'abc',状态:true,cookie:true,xfbml:true});
});
$(“#fbLogin”).live(“单击”,函数(){
FB.Event.subscribe('auth.login',函数(响应){
警报(“loggedin”);
var isUserAuthenticated=@User.Identity.IsAuthenticated.ToString().ToLower();
if((response.status=='connected')&&(isUserAuthenticated==false)){
window.location.href='@Account.url.FacebookConnect()';
}
});
});
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“///connect.facebook.net/”+@Thread.CurrentThread.CurrentUICulture.Name.Replace('-','.'''''+')“/all.js#xfbml=1”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
使用
我不太记得为什么会这样,但它看起来确实是这样。你的选择器应该是“#fbLogin”,因为它是一个IDThis也不起作用,我知道它应该起作用,但就像我的其他尝试一样,肯定有什么东西阻止了它的工作,但我不知道是什么。移动
$().live()
里面的东西$(document).ready()
。这只是一个绑定的指令。你需要将它放在ready函数中。订阅auth.login
似乎有点问题(从我在这里读到的),使用auth.authResponseChange
似乎可以为一些人提供更可靠的结果。尝试过了,在Firebug中使用$(“#fbLogin”).live(“单击”,函数()当我登录时,行甚至不会被触发。可能的重复不是重复,我设法以另一种方式使原始版本工作,但现在需要使单击事件工作,这仍然是一个相同的基本主题。
$(yourselector).live('click', function() {
//fb stuff
});