2

そのため、div と fb js の呼び出し: Fb は (body) タグの直後に配置するように指示します。それを使用するすべての wp プラグインは、それをフッターに配置します (wp_just_after_body() がないため、wp_footer())。必要な fb 機能が body タグの後にある場合にのみ機能するという状況が一度ありました。私は違いが何であるか、そしてボディとフッターのどちらがこれに最適な場所であるかを知るのに十分なjsを知りません。


  1. タイプの名前が示すように、不完全な I/O リクエストごとに 1PerIoDataつのデータ構造が必要です。構造体は、 で非同期 I/O を開始した時点から、またはを使用して I/O 完了ポートからその要求の完了パケットを取得する時点まで持続する必要があります。PerIoDataWSASendWSARecvGetQueuedCompletionStatus
  2. OVERLAPPED新しいリクエストを開始しようとしているときは、常に構造を再初期化する必要があります。
  3. PerIoDataI/O 要求が完了する限り、構造を再利用できます。pPerIoDataI/O 完了ポートから取得したことを考えると、それを後続の要求に再利用できます。新しい I/O 要求に適した状態になるように、その構造体の該当するフィールドをリセットしたことを確認してください。

フォローアップの質問に答えるために編集します。

A.continue追加のリクエストを開始できなくても、I/O イベントの処理を続行したいためです。そうしないcontinueと、これ以上 I/O 完了を処理できなくなります。continueある種のエラーハンドラを呼び出す前に。

B. 必ずしも「正しい」または「間違った」割り当て場所があるとは思いませんが、PerIoDataそこに割り当てると、同じデータ構造の割り当てと削除が事実上繰り返されることに注意してください。ループします。I/O 完了ポートを使用してコードを記述するときは、事前にPerIoData同等のプールを割り当てて再利用します。

C. 答えを知るのに十分なコンテキストがありません。これを行うコードと、アサーションがヒットする行を示してください。私がお手伝いできるかもしれません。

D.あなたが提案したように、操作タイプを操作などのより細かいコンポーネントに分割できますOP_TYPE_RECEIVE_DATA_SIZE。警告として、各呼び出しで数バイトを読み取ると、期待どおりのWSARecvパフォーマンスが得られません。Winsock 呼び出しは高価です。数バイトのリクエストを行うのはかなりのオーバーヘッドです。PerIoDataより大きなデータ ブロックを一度にバッファに読み込むことをお勧めしますWSARecv。次に、そのバッファーからサイズ情報を引き出し、そのバッファーからデータのコピーを開始します。バッファに収まりきらないほど多くのデータが到着した場合はWSARecv、残りを読み込むまで追加の呼び出しを行うことができます。

4

2 に答える 2

3

ロードする各ページの開始 body タグの直後。

Facebook SDK ドキュメントからの詳細:

display: none または visibility: hidden を使用して fb-root 要素を非表示にしないでください。非表示にすると、SDK の一部が Internet Explorer で適切に動作しなくなります。

SDK は、要素を fb-root に挿入します。この要素は、本文に対して相対的に配置されるか、ページの上部に近い要素に対して相対的に配置されることが期待されます。fb-root 要素が position: absolute または position: relative の要素内にない場合が最適です。fb-root 要素を配置された要素の内部に配置する必要がある場合は、ボディの上部に近い位置に配置する必要があります。そうしないと、SDK の一部が正しく機能しない可能性があります。

于 2014-07-01T07:08:11.637 に答える
0

ドキュメントのフッターの近くで js SDK を使用する必要がある場合は、非同期を使用し、SDK が読み込まれて初期化された後にのみ API 呼び出しを行うことをお勧めします。

私が使う。例: すべての API 呼び出しを関数でラップしたとします。

 <div id="fb-root"></div>
<script>
      window.fbAsyncInit = function() {
        FB.init({
    appId  : '135669679827333',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true, // parse XFBML
    channelUrl : 'https://anotherfeed.com/emo/channel.html', // channel.html file
    oauth  : true // enable OAuth 2.0
        });

// facebook has been loaded and init, you can call your api functions from here.
if (window!=window.top) {
FB.Canvas.EarlyFlush.addResource("https://anotherfeed.com/");
setTimeout("FB.Canvas.setAutoGrow(250);", 2000);
toggle('connections');  // my api call
FB.XFBML.parse(loginb); // my api call
}else {
}
// !facebook load and init.
      };
  // Load the SDK Asynchronously
(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'));

</script>
</body>
</html>
于 2012-07-10T16:45:14.677 に答える