1

次のコードを使用して、Facebook JavaScript SDK をページにロードしています。

           (function() {
            console.log('Hello World! From self executing function.'); 
            var e = document.createElement('script');
            e.async = true;
            e.type = 'text/javascript';
            e.src = document.location.protocol +  '//connect.facebook.net/en_US/all.js';
            document.getElementById('fb-root').appendChild(e);
            console.log('javascript sdk is appended into the fb-root element of the page.');
        }());

適切にロードされていますが、コンソールに次のエラーが表示されます:-

  Error: Permission denied to access property 'toString'
  [Break On This Error]     

   ...5(i(ca.getElementsByTagName('*')),'forEach',true,function(ka){if(!ea&&ka.getAttr...

これを修正する方法は?

ありがたいことにどんな助けも受け取りますか?

4

1 に答える 1

5

Facebook JavaScript SDK は通常、クロス ブラウザーの問題を引き起こします。この問題を解決するために、facebook 自体がメソッドを統合しました。つまり、FB.init() 関数中にチャネル URL を追加しました。

window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
  appId      : 'YOUR_APP_ID', // App ID from the App Dashboard
  channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication
  status     : true, // check the login status upon init?
  cookie     : true, // set sessions cookies to allow your server to access the session?
  xfbml      : true  // parse XFBML tags on this page?
});

// Additional initialization code such as adding Event Listeners goes here

 };

チャネル ファイルを追加すると、クロス ブラウザーの問題が解決されます。

channel.html ファイルの内容は、次の 1 行だけにする必要があります。

<script src="//connect.facebook.net/en_US/all.js"></script>

FB.init() 内の channelUrl パラメータはオプションですが、強くお勧めします。チャネル ファイルを提供すると、3 つの特定の既知の問題に対処するのに役立ちます。

  • フレーム間で通信するコードを含むページでは、ソーシャル プラグインが channelUrl なしで空白として表示される場合があります。
  • channelUrl が指定されておらず、ページに自動再生のオーディオまたはビデオが含まれている場合、クロスドメイン通信のためにページがバックグラウンドで 2 回読み込まれるため、ユーザーには 2 つのオーディオ ストリームが聞こえる場合があります。
  • チャネル ファイルは、サーバー側のログに余分なヒットが含まれないようにします。channelUrl を指定しない場合は、fb_xd_bust または fb_xd_fragment パラメーターを含むページ ビューをログから削除して、適切なカウントを確保する必要があります。

channelUrl は、SDK を含めるページと一致する完全修飾 URL である必要があります。つまり、サイトが www を使用して提供されている場合は、チャネル ファイルのドメインに www を含める必要があります。また、ページで document.domain を変更する場合は、channel.html ファイルでも同じ document.domain の変更を行う必要があります。

https://developers.facebook.com/docs/reference/javascript/

于 2013-03-20T11:24:40.733 に答える