我正在使用 Facebook Connect 构建一个网站,因此使用 Facebook Javascript SDK。
问题:使用 Firefox 时,页面在登录或注销后无法正确重新加载。
FB.Event.subscribe(
'{% if current_user %}auth.logout{% else %}auth.login{% endif %}',
function(response){
window.location.reload();
});
显然,它看起来像是一个已知问题(只需键入“window location reload not working on firefox”,您就会得到很多结果)
更准确地说,Firefox 在重新加载页面时似乎没有发送正确的 cookie...
- 当我点击登录时,一旦 Facebook 登录我并设置了 cookie,Firefox 就不会发送任何 cookie
- 当我点击注销时,一旦 Facebook 将我注销并删除 cookie,Firefox 就会发送之前存在的 cookie。
我得出结论它使用了一些“缓存功能”。
我试图按照 here 中的描述做出解决方法并实现了这一点:
redirect_url = encodeURIComponent(window.location.href);
url = window.location.href + "account/login?redirect_url=" + redirect_url;
window.location.replace(url);
但问题仍然存在(我猜是缓存......)你能帮我解决这个问题吗?
谢谢。
最佳答案
尝试以零延迟将 window.location.reload() 调用包装在 setTimeout() 中。显然,Firefox 会在设置 cookie 之前触发该事件。包装应该将重新加载调用放在事件队列中,并允许正确设置 cookie。
关于firefox - Facebook Javascript SDK 窗口位置重新加载在 Firefox 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7553037/