我有一个与jQuery Mobile(完整的ajax导航)配合使用的webapp。我在jQueryMobile的 pageinit 事件(每个页面调用)初始化Facebook SDK。
jQuery(document).on('pageinit', function (event) {
// load FB SDK
window.fbAsyncInit = function() {
FB.init({
appId : 'MYAPPID',
channelUrl : '//URL/channel.html',
status : true,
xfbml : true,
oauth : true
});
FB.Event.subscribe('auth.authResponseChange', getCurrentUser);
};
(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/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
// bind a button to get current user manually
$('.findme').off('click');
$('.findme').on('click', getCurrentUser);
});
function getCurrentUser(response) {
FB.api("/me", function (response) {
if (window.console && window.console.log) console.log(response.name);
});
}
HTML包含
<button class="findme">Click to get infos about me</button>
此代码适用于第一页。我更改页面(ajax调用),它在我的第二页上不起作用。我重装(F5)我的第二页,它有效。
你见过这个问题吗?你知道吗?
答案 0 :(得分:0)
如果使用ajax更改页面,则不必(也不应该)每次都重新初始化FB SDK。此外,您正在异步加载它,因此它不需要等待pageinit
,但您需要在window.fbAsyncInit
函数内绑定click事件。加载FB SDK后,该功能就会立即运行。
答案 1 :(得分:0)
你见过这个问题吗?
我认为通常的问题......
//绑定按钮以手动获取当前用户 $(&#39; .findme&#39;)。关(&#39;单击&#39;); $(&#39; .findme&#39;)。on(&#39;点击&#39;,getCurrentUser);
如果您将按钮切换为另一个按钮,JQuery将无法识别新按钮。而是以委托/直播方式使用on
。