这就是我想要的:对话框上写着“嘿,我们必须登录到Facebook并授权”,然后是一个按钮进入Facebook登录页面,然后返回主页面(启动对话框的那个) 。
现在,对话框弹出正常,然后它正确地重定向到Facebook,然后重定向回来,而不是只是弹出到主页,它弹出,然后弹回,然后再次弹出。我敢肯定我已经做了一些我不应该做的事情。还请评论我的jquery,因为我是新手,并且宁愿不养成坏习惯。
这就是我所拥有的。
index.html在正文中有这个对话框:
<div id="dialog1" data-role="dialog" data-theme="b">
<div data-role="header" data-position="inline">
<h1> Welcome!</h1>
</div>
<div data-role="content">
<p>
<h5> Hey! Welcome to Tag Search. We need to take a few steps to set up the app. <br><br>
First you have to login to facebook and authorize Tag Search. Don't worry, we'll never post anything to your wall unless you tell us to! <br>
</h5>
</p>
<a id="loginBtn" data-role="button">Click Here to Login!</a>
</div>
</div>
In my <script> tags I have this event listener:
$("#loginBtn").bind("click",function(x){
$('#dialog1').dialog('close');
login();
});
此外:
function login() {
FB.login(
function(response) {
console.log(response.session);
if (response.session) {
getLoginStatus();
//alert('logged in');
} else {
alert('not logged in');
}
},
{ perms: "email, friends_photos, offline_access" }
);
}
和
function getLoginStatus() {
FB.getLoginStatus(function(response) {
if (response.status == 'connected') {
//alert('Connected');
if(!session_access_token)
session_access_token=response.session.access_token;
getMe();
$("#loginout").text('Logout');
$("#loginout").bind('click', function(){logout()});
} else {
$.mobile.changePage('#dialog1', 'pop');
}
console.log(response);
});
}
在document.addEventListener上调用getLoginStatus('deviceready',function(){
答案 0 :(得分:0)
A)多重绑定(更容易)
可能是您多次绑定到按钮,因此当您单击它时,您的功能会多次触发。
要检查是否只需将console.log添加到点击处理程序,并查看点击按钮时触发的频率。
你必须记住Jquery Mobile如何处理页面 - 加载的第一个页面是你的“锚页面”,只要你不是rel =“external” - 链接到另一个页面就应该留在DOM中然后将成为你的新主页)。加载时,所有其他页面(包括对话框)都会附加到锚页面DOM中。您的锚页面只是隐藏,但没有消失,所以很容易多次绑定,认为“页面已经消失,需要再次绑定”。使用Phonegap我认为你有一个包含所有页面的文件,所以这也应该保留在那里。
B)太多的哈希变换触发(棘手)
将JQM转换视为两个并行进程,因为hashChange随着每个转换一起触发。在正向转换时,哈希转换被阻止(检查JQM $ .mobile.urlHistory.ignoreNextHashChange ),它可以通过的向后转换并负责反向转换。
如果页面行为异常,您必须找出触发和阻止的进程。在_handleHashChange中的JQM内部的控制台并单击路由(在_handleHashChange之前搜索“click routing”)以查看发生的情况。
我的猜测是A)
祝你好运,让我知道它是否有效,或者如果你对A)和B都有任何更多的问题