JS SDK auth.logout事件行为最近似乎发生了变化
JS SDK auth.logout event behavior seems to have changed recently - what is going on?
几个月来,我一直在将以下代码和JS SDK结合使用。在过去的几天里,它给了我各种各样的问题。
-
注销事件不会在注销时触发-我使用JS XFBML标记进行登录/注销,如:
注意:点击注销按钮确实会从FB注销,但事件不会在我的网站上触发。
- 当我在注销时重新加载页面时,注销事件确实会触发,这会在注销事件触发时导致页面重新加载循环。现在没什么大不了的,因为初始注销事件没有启动。然而,在今天之前,注销事件在注销和每次页面加载(注销时)时触发,这意味着它将通过注销重定向无休止地重新加载页面
直到几天前,这一切都很好,我已经好几个星期或几个月没有接触过这部分代码了。有什么想法吗?
事件代码:
FB.Event.subscribe('auth.logout', function(response) {
window.location.href = '/logout.php';
});
注意:我也在使用php SDK来实现网站上的其他功能-我使用的是两个的最新版本
我在这里找到了另一篇关于这个问题的帖子,但解决方案是删除重载,这是一个糟糕的解决方案——为什么这个JS事件会这样工作?
谢谢!
好吧,我想出了一个变通办法,尽管我一点也不自豪。我正在使用这些事件:
FB.Event.subscribe('auth.login', function(response) {
setTimeout('document.location.reload()',0);
});
FB.Event.subscribe('auth.logout', function(response) {
<? if ($_SESSION['user']['id']): unset($_SESSION['user']); ?>
setTimeout('document.location.reload()',0);
<? endif; ?>
});
我将所有用户信息存储在会话中,与session相关的条件确保页面不会循环。使用setTimeout是因为Facebook Javascript SDK窗口位置重载在Firefox上不起作用。然后我添加了一个jQuery函数来在点击注销按钮后重新加载页面:
$(function() {
$('#logoutButton').click(function() {
setTimeout('document.location.reload()',0);
});
});
<span id="<?= $user ? "logout" : "login" ?>Button">
<fb:login-button autologoutlink="true"></fb:login-button>
</span>
我已经在Firefox和Chrome上测试过了,效果很好。这不是真正的解决方案,更像是丑陋的修复:),但我还是决定发布它。事实上,我现在正在考虑放弃整个"注销操作",因为大多数用户无论如何都不想从Facebook注销。
相关文章:
- 为什么属性存在于对象实例上,即使其原型发生了更改
- Javascript函数 - 通过引用复制,但这里发生了什么
- 套接字发生了什么's在'断开连接'事件(服务器端)
- 这段代码中发生了什么
- Wamp没有识别出我的代码发生了更改
- 如何检查输入框值在使用淘汰之前是否发生了更改
- 通过它访问HTML元素's id DIRECTLY-这里发生了什么
- window.opener引用在Java 1.7.0_04-b20中从Applet重定向期间发生了更改,但在1.7.0_
- 如何知道JS对象属性的值在哪一行发生了更改
- 查找表单的哪些特定部分在输入时发生了更改
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 起重行为在铬 48 和 49 之间发生了变化
- 这个JavaScript函数中发生了什么
- 我的输入字段听到除回车之外的每个“键下”事件.我有一个日期选择器,不确定发生了什么
- isPrototypeOf 说不,但实例说是——发生了什么
- 找出 Vue.js 深度自定义指令中哪个属性发生了变化
- 十分钟内的 Javascript:此示例代码中发生了什么说明惰性范围
- 键控后 AJAX 发生了一些奇怪的事情
- Google Maps API v3最近是否发生了与mootools.js Java Script不兼容的更改,导致控件
- JS SDK auth.logout事件行为最近似乎发生了变化