2013-05-14 64 views
0

我有一个与jQuery Mobile(完整ajax导航)一起使用的web应用程序。我在jQueryMobile的pageinit事件(每个页面调用)初始化Facebook SDK。使用JQueryMobile,Facebook JS 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

如果您使用ajax更改页面,则不必每次都(也不应该)重新初始化FB SDK。此外,您正在异步加载它,所以它不需要等待pageinit,但是您需要绑定window.fbAsyncInit函数中的click事件。该函数在FB SDK加载后立即运行。

0

你见过这个问题吗?

我认为它的通常问题...

//绑定一个按钮来手动获取当前用户 $关闭( '点击 ')(' findme。')。 $('。findme')。on('click',getCurrentUser);

如果将按钮切换为另一个按钮,JQuery将不会以这种方式识别新按钮。改为使用代理/直播方式中的on

相关问题