0

Facebook JS SDK を使用しようとすると、エラーが発生し続けますFB undefined。IE の JavaScript デバッガーで監視すると、ページの読み込み中に正しく実行されますが、最後には未定義であり、サブスクライブされているイベントは発生しません。目標: ページ タブで最上位レベルのページを更新し、ファン ゲートを通過すること。

ここで何が欠けているかについてのアイデアはありますか?

コード:

<div id="fb-root"></div>
 <script>

  window.fbAsyncInit = function(){

 FB.init({

 appId : 'APP CODE INSERTED HERE',

 status : true, // check login status

 cookie : true, // enable cookies to allow the server to access the session

 xfbml : true, // parse XFBML

 channelUrl : 'URL to Channel .ASPX'

 });


 // Additional initialization code here

     FB.Event.subscribe('edge.create',

     function(response){

    top.location.href = 'Page to refreshed inserted here';
     });

 };

(function(d) 
{
var js, id = 'facebook-jssdk'; 
if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;

 js.src = "//connect.facebook.net/en_US/all.js";

 d.getElementsByTagName('head')[0].appendChild(js);

 }(document)
);

</script>
4

1 に答える 1

0

SDK を非同期的にロードする JavaScript が、現在Facebook SDKのドキュメントに示されているものと一致しません。下記参照:

// 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));

SDK をロードする JavaScript の両方のブロックは非常に似ています。あなたの JavaScript は以下を使用します:

d.getElementsByTagName('head')[0].appendChild(js);

SDK をロードします。FB で文書化されている最新バージョンでは、次のものが使用されています。

ref = d.getElementsByTagName('script')[0];
ref.parentNode.insertBefore(js, ref);

あなたのバージョンは、HEAD HTML タグに追加することによって、FB JavaScript をロードするためのソース参照を追加します。最新バージョンでは、最初の SCRIPT 参照を見つけ、その参照の前に FB 参照を挿入することでこれを行います。

おそらく、この 2 つの方法の微妙な違いが原因で問題が発生している可能性があります。

これを除外する 1 つの方法は、次の HTML をページのヘッダーに配置して、FB JavaScript の読み込みを同期的に一時的にハード コードすることです。

<head>
<script type="text/javascript" src="http://connect.facebook.net/en_us/all.js"></script>
.
.
.
</head>
于 2012-06-28T21:45:30.340 に答える