所以这是我的另一个问题,已经给出了解决方案,但没有给出答案。
真的很简单。我想在页面上显示 OAuth 对话框。此页面既可以是 Facebook 选项卡,也可以是独立的。我寻找答案的大多数地方都说FB.login()
必须调用该函数以响应用户操作,例如“单击按钮”等;否则,您可能会遇到浏览器阻止 OAuth 对话框弹出窗口的风险。这正是我正在做的。然而...
如果“单击”事件处理程序只是通过属性值或 AttachEvent 或您使用的任何内容(我使用 jQuery.bind())附加到按钮/任何内容,则无法保证在单击 FB 时API是满载的,因为大家都推荐异步加载。这就是为什么在加载 API 的代码中,我触发了一个事件,在该事件的处理程序中,我实际上绑定了“按钮”“单击”处理程序。然后,当用户单击“按钮”时,自然会触发事件,执行处理程序,打开 OAuth 对话框......并阻止。请。任何人。我究竟做错了什么?请注意,我正在寻找解决方案。但是,我仍然需要通过对话框(而不是重定向)来执行此操作,并且我仍然需要异步加载 API。这是一些代码...
就在之前</head>
:
window.fbAsyncInit = function () {
FB.init({
"status":true,
"cookie":true,
"xfbml":true,
oauth:true,
"appId":"12345678987654321"
});
FB.Canvas.setAutoGrow();
jQuery(document).trigger("fb-ready");
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if(d.getElementById(id)) {return;}
js = d.createElement(s)
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=398161863536524";
fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"))
紧随其后的</div>
是要点击的:
jQuery(document).bind("fb-ready", function() {
jQuery("#btn-do-that-stuff").bind("click", function() {
if( !FB ) { return false; }
FB.login();
});
});
提前感谢大家,他们解释了这一点,同时也很有意义。再次感谢大家,谁可以告诉我如何解决这个问题,尊重上述标准。