1

ウェブサイトに facebook javaSDK を使用していますが、奇妙な問題があります。「インターネットエクスプローラー」でウェブサイトを読み込むと、常に正常に動作します。Firefox で Web サイトを読み込むと、常に 2 回読み込まれます。chrome を使用すると、JSDK が 1 回読み込まれる場合とまったく読み込まれない場合があり、「Uncaught ReferenceError: FB is not defined」というエラーが表示されます。SDK の非同期読み込みを使用してみましたが、それでも同じ問題が発生します。ところで、私はfirefoxにfirebugを持っています.JSDKが2回ロードされる理由はありますか?

これはjssdkをロードするためのコードです

<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
  appId      : '108437552626598', // App ID
  status     : true, // check login status
  cookie     : true, // enable cookies to allow the server to access the session
  xfbml      : true  // parse XFBML
});


};

 // Load the SDK Asynchronously
 (function(d){
 var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
 if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;
 js.src = "//connect.facebook.net/en_US/all.js";
 ref.parentNode.insertBefore(js, ref);
  }(document));
</script>

そして、私はFB.getloginを使用しようとしています.FacebookのopengraphをWordpressサイトに統合しようとしています. メイン コンテンツの読み込みが完了したら、すぐにスクリプトを作成します これがコードです

             </div><!-- end #content -->


<script type="text/javascript"      src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
 <script type="text/javascript">
 FB.getLoginStatus(function(response) {
 if (response.status == 'connected') {
alert('in');
window.facebooklogin = 'true';
    window.myValue = response.authResponse.accessToken;  
window.myId = response.authResponse.userID;
$('.userimage img').attr('src','http://graph.facebook.com/' + window.myId +         '/picture');
 $.ajax({ url: 'http://ballvids.com/check/admin_checkuser.php',
     data: {action: window.myId},
 dataType:'json',
     type: 'post',
     success: function(output) {
    if (output.message == 'true'){
        $('.thumbnail   img').attr('src',"http://ballvids.com/images/on2.png");
        alert(window.myValue);
        FB.api('/me/video.watches?video=<?php echo   urlencode(get_permalink($post->ID));?>&access_token='+window.myValue,'post',function(response) {
             if (!response || response.error) {
            alert(response.error.message);
            } else {
            alert(response.id);
            postID=response.id;
            showStuff('removeTimeline');
            }  
                });
    }else{

        $('.thumbnail img').attr('src',"http://ballvids.com/images/off2.png");
    }

        }
});
}else{
    alert('inside2');
    $('.thumbnail img').attr('src',"http://ballvids.com/images/off2.png");
    window.facebooklogin = 'false';
}

}、真実);

ありがとう

4

2 に答える 2

1

FBLoginStatus()あなたは、の中で、を呼び出す必要がありますfbAsyncInit

window.fbAsyncInit = function() {
    FB.init({
        appId  : APP_ID,
        status : true,
        cookie : true,
        xfbml  : true
    });

    FB.getLoginStatus( function(response) {
        console.log(response);
    }, true);
};

から返されるキャッシュオブジェクトに問題がある場合はFB.getLoginStatus()、2番目のパラメータを渡す必要がありますtrue

ドキュメント:https ://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

于 2012-06-13T06:02:36.733 に答える
1

Firefox で Web サイトを読み込むと、常に 2 回読み込まれます。

channel.html ファイルをセットアップして、初期化時に参照してみてください。

クロムを使用すると、JSDK が 1 回読み込まれることもあれば、まったく読み込まれないこともあり、「Uncaught ReferenceError: FB is not defined」というエラーが表示されます。

FB メソッドへの呼び出しを window.fbAsyncInit にラップした場合、SDK がロードされていないとそのコールバックが呼び出されないため、これは不可能です。結論: そうではありませんが、代わりに FB.getLoginStatus 呼び出しを別の場所に配置しました (コードにはまだ表示されていません)。

于 2012-06-13T08:29:06.453 に答える