Wczoraj postanowiłem poprawić sposób, w jaki moja strona internetowa ładuje filmy z YouTube, umieszczając je tylko wtedy, gdy użytkownik ich zażąda. Czasami strona może zawierać nawet 30 filmów, a wczytanie jej zajmie dużo czasu.Pierwsza próba leniwego ładowania (opóźnianie ładowania osadzonych filmów w YouTube) - jak mogę to zrobić z większą wdziękiem?
Jest to pierwszy raz, kiedy próbował się „lazy loading” metody niczego, i pomyślałem, że byłoby dobrze warto zapytać:
Co mogę zrobić, aby poprawić w tej sprawie?
Jak mogę uczynić to nieco bardziej wdzięku?
Czy całkowicie mija się z odroczonym ładowaniem?
Zignoruj styl, ponieważ nie ma to znaczenia.
Sposób ten działa jest najpierw umieszczając kotwicę na stronie zawierającej dany film ID:
<a href="#" data-video="FzRH3iTQPrk" class="youtube-video">
JQuery za czym pętle przez każdy a.youtube-video
i tworzy przezroczystą przęsło z miniaturki filmu jako jego tło:
$('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"
})
...
następnie modyfikuje stylizacji znacznika zakotwiczenia (odbywa się to tu, aby zapobiec wpływając przeglądarki z JavaScript osób niepełnosprawnych):
$(this).css({
height:315,
width:460,
position:"relative",
display:"block",
textAlign:"center",
color:"#fff",
fontSize:26
});
Następnie kończy się pętlę poprzez dodanie rozpiętości do kotwicy:
$(this).text('Click to load video');
$(this).append(videoBackground);
});
Załadunek obiektu osadzonego wideo YouTube pojawia się na kotwicy kliknij:
$('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>');
...
Ta operacja kończy się po dodaniu kodu do osadzenia w rodzicu kotwicy i usunięciu zakotwiczenia:
$(this).parent().append(videoEmbed);
$(this).hide();
});
Co pomocą videoThumbnail na przewodnika click for? Pracuję nad czymś podobnym, a jednym z problemów, które napotkałem, jest ilość powtórzeń występujących w każdym filmie. Twoje wrażenia mogą się różnić. Rozważ także automatyczne odtwarzanie wideo po pierwszym kliknięciu, aby użytkownicy nie musieli klikać dwukrotnie. – lrusli
Ah Usunąłem to teraz. Stało się tak, ponieważ początkowo używałem małych miniatur - kliknięcie spowodowałoby powiększenie obrazu i zastąpienie go większą miniaturą. –
Czy obejrzałeś API, które youtube zapewnia do wygodnego osadzania filmów, mają apki jS (https://developers.google.com/youtube/js_api_reference) i aplet iframe (https://developers.google.com/youtube/iframe_api_reference) – Arindam