昨日私のウェブサイトがYouTubeの動画をアップロードする方法を改善することを決めました。場合によっては、1ページに30本の動画がある場合があります。この場合、読み込みに時間がかかることがあります。遅延読み込みの最初の試み(埋め込まれたYouTube動画の読み込みを延期する) - これをもっとうまくいくにはどうしたらいいですか?
これは私が何の「遅延ロード」の方法を試みたてきた、と私はそれを求めても価値があるだろう考え出し初めて:
私はこれを改善するために何ができますか?
私はそれをもう少し優雅にすることができますか?
これは遅延ロードのポイントを完全に欠いていますか?
ここではスタイリングは無視されます。
これが機能する方法は、最初のビデオのIDを含むページ上のアンカーを置くことである:
<a href="#" data-video="FzRH3iTQPrk" class="youtube-video">
背後にjQueryは、すべてのa.youtube-video
をループし、などの動画のサムネイルと透明スパンを作成しますその背景:
$('a.youtube-video').each(function() {
var videoId = $(this).attr('data-video');
var videoThumbnail = "http://img.youtube.com/vi/" + videoId + "/0.jpg";
var videoBackground = $('<span class="youtube-thumbnail"></span>');
videoBackground.css({
background:"#fff url('"+videoThumbnail+"') no-repeat"
})
...
アンカータグのスタイリングを変更します(これは、JavaScriptを使用してブラウザに影響を与えないようにするために行われます)。 )無効:
$(this).css({
height:315,
width:460,
position:"relative",
display:"block",
textAlign:"center",
color:"#fff",
fontSize:26
});
次いでそれをアンカーにスパンを追加することによって、ループを終了:
$(this).text('Click to load video');
$(this).append(videoBackground);
});
埋め込まれたYouTubeのビデオオブジェクトの読み込みは、アンカークリックで発生します
$('a.youtube-video').click(function(e) {
e.preventDefault();
var videoId = $(this).attr('data-video');
var videoThumbnail = "http://img.youtube.com/vi/" + videoId + "/0.jpg";
var videoEmbed = $('<object> ... </object>');
...
これは、アンカーの親に埋め込みコードを追加してアンカーを削除することで終了します。
$(this).parent().append(videoEmbed);
$(this).hide();
});
? 私は似たようなことに取り組んでいます。遭遇した1つの問題は、各ビデオで発生する再描画の量です。あなたの経験は異なるかもしれません。 また、最初のクリック後に動画の自動再生を検討すると、ユーザーは2回クリックする必要がありません。 – lrusli
ああ、私は今それを削除しました。これは、もともと小さなサムネイルを使用していたときのものでした。クリックすると画像が拡大され、サムネイルをより大きなサムネイルに置き換えられました。 –
はあなたがユーチューブに便利な動画を埋め込むために提供APIを見ていました、彼らはJSのAPI(https://developers.google.com/youtube/js_api_reference)とiframeのAPI(https://developers.googleを持っています。com/youtube/iframe_api_reference) – Arindam