2012-05-01 3 views
0

私はjquery-oembed-allというプラグインを使用しています。プラグインは、サイトに外部URLを動的に埋め込むための埋め込み機能を提供します。jquery-oembed-all divにiframeを追加するとページのレンダリングが遅くなります

プラグインのoEmbedコンテンツを解決し、次のんのすべての重労働を行います。

oembedContainerが 埋め込まフェッチされた内容を保持するローカルページに動的に生成されたスパンである
oembedContainer.append(oembedData.code); 

oembedData.codeは実際の内容です が取得されました。

oembedData.codeはiframeでも構いませんが、youtubeやその他の動画コンテンツの通常の場合です。

同じページに多数の動画がある場合、各iframeに負荷がかかり、ページビジーインディシアーターが停止することはありません。すべてのiframeが完全に読み込まれていない限り、ページをスクロールすることは困難です。

私はこの状況をどのように改善できるか、

任意の提案(ええ、彼らはFacebookの。だ)Facebookは、このようなスムーズなUIを提供する方法だろうか?

+0

こんにちは、私はそのプラグインの作者です。 何個のアイテムをロードしていますか?遅いIFrame、埋め込みはうまくいくのですか? –

答えて

0

私はちょうどそれが遅い理由を見るためにコードを見ました。

Youtubeはoembed(see here)のJSONPオプションを提供しません。つまり、ライブラリが直接ブラウザー上にoembedを取得できません。これを回避するためにYQLを使用してOEmbedデータを取得し、それをいくつかのJSONPでラップします。 YQLはデータを返すのに時間がかかります(私が見つけて1〜2秒)ので、多くのリクエストでは時間がかかります。

これには2つの選択肢があります: 1. JSONPを追加するためにYoutubeを入手します。要求されたとおりではないと思われます。公式仕様の一部ではないため、サポートしません。 2.ライブラリをiframeルックアップを使用するように変更してください:) - もっと可能性があります - 単にgithubでチケットを追加すると、私は何ができるのかを見ていきます。

Andrew

+0

完全にロードされていない限り、iframeを非同期にロードしてメインページの本文に追加することはできませんか?私は問題がiframeだけで他の埋め込みのみがうまく動作することがわかります。応答が遅いだけでなく、あなたが返すiframe srcにwmode = transparentを追加しない限り、youtube iframeはページの他のコンポーネントのz-indexを尊重しない限り見ることができます。それのための回避策はありますか? –

+0

もう一度質問があります。 oembed関数を呼び出す最良の方法は何ですか?レンダリング時にすべての項目に対して呼び出す必要があります(idセレクター$( '#somelinkid')を渡します)。または、ページの完全なレンダリングとcssセレクタ$( '。oembed')でのoembed呼び出し後に一度呼び出す必要がありますか?基本的にこのプラグインを使用しているページはFacebookのクローンであり、ユーザーのソーシャルフィードなので、同じページに100件の投稿があり、またさまざまなイベントで新しい投稿が入る可能性があります。 –

+0

私はそれが非同期atmでそれらを行うと確信しています。彼らが完全にロードされるまで、それらを追加することについてはわからない - それを調べなければならないだろう。 Iframeに変更すると、おそらくwmodeを追加できます。 スタックオーバーフローを頻繁に見ないので、私が忘れる可能性があるので、あなたはgithubのチケットを作ってください。 セレクタを介して一度にすべての負荷が一番良いとわかりました。これらの新しい項目のためだけにトリガーされます。 –

関連する問題