Få hurtigere loadtid på dine sider der indeholder Youtube videoer

Du har en hjemmeside hvor du gerne vil vise nogle Youtube videoer på, men samtidig vil du ikke have det går ud over hastigheden på siden og derved risikerer at miste besøgende fordi det tager for langt tid at loade (og beholde den høje PageSpeed score du har).

Der er en løsning, hvor du kan få Youtube videoer på siden samtidig med at du har en lav loadtid.

Du skal lave lidt kodearbejde for at få det til at virke. Der er plugins til WordPress og andre CMS som kan det samme, men jeg vælger at vise den “rå” løsning så det kan implementeres hos alle.

Hvad er løsningen?

Normalt når du ligger en Youtube video ind på din hjemmeside, så sker det med Youtubes embed funktion, der giver dig en HTML iframe kode. Eksempel:

<iframe width="560" height="315" src="https://www.youtube.com/embed/2lAe1cqCOXo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Det giver øget loadtid fordi du skal indlæse hele den iframe, deres scripts m.m. I stedet for den normale løsning, så kan du vælge løsning hvor du simpelthen indsætter et almindeligt billede og når man klikker på billedet, at den så indlæser YouTubes iframe kode med autoplay sat til ja.

Jeg viser hele koden der skal til i bunden af siden, så du bare kan hente en samlet løsning.

Løsningen del 1 / 3 – Billedet

Du skal bruge din youtube url med det samme. Eksempel: https://www.youtube.com/watch?v=2lAe1cqCOXo

[ YouTube Rewind 2019: For the Record | #YouTubeRewind ]

Du skal her tage dit video ID og indsætte det i en HTML kode. Video ID´et i mit eksempel er: 2lAe1cqCOXo

HTML koden:

i HTML koden skal du indsætte dit youtube ID under data-id og bredden på videoen under data-width samt højden under data-height

og så billedet indsætter du IDet på videoen  i billed URLen.

CSS:

I CSS koden her skal du udskifte playbutton.png med din egen URL til dit playbutton billede. Jeg har lagt en fil du kan download nedenunder til playbutton.

<style>
.wcioYouTubeVideoContainer {
cursor:pointer
}

.wcioYouTubeVideoContainer::after {
content: ” “;
background: url(playbutton.png);
width: 68px;
height: 48px;
position: absolute;
left: 0;
right: 0;
margin: 0px auto;
top: 62%;
}

.wcioYouTubeVideoContainer.changed::after {
background: none;
}
</style>

Løsningen del 2 / 3 – Javascript

Løsningen her er lavet med jQuery, så du skal bruge det på din side, eller kodet det anderledes så den ikke kræver jQuery.

Koden her ser om man har klikker på den DIV der indeholder youtube billedet og tager Video IDet du indsatte i data-id og skifter HTML koden ud med den korrekte iframe kode fra embed.

I javascript koden behøver du ikke ændre noget for at den virker.

<script type=”text/javascript”>
jQuery(function($) {

jQuery(‘.wcioYouTubeVideoContainer’).click(function(){
wcioYoutubeSwap( $(this) );
});

function wcioYoutubeSwap( thisObj ) {
var youtubeId = thisObj.data(“id”);
var videoWidth = thisObj.data(“width”);
var videoHeight = thisObj.data(“height”);

$(thisObj).toggleClass(‘changed’);

thisObj.html(‘<iframe width=”‘+videoWidth+'” height=”‘+videoHeight+'” src=”https://www.youtube.com/embed/’+youtubeId+’?autoplay=1″ frameborder=”0″ allowfullscreen></iframe>’);

console.log(youtubeId);
console.log(videoWidth);
console.log(videoHeight);
}

});

</script>

Løsningen del 3 / 3 – Sammensæt koden

Du skal nu sammensætte koden , men jeg har gjort det nemt for dig. Du kan hente det hele i denne fil:

HTML, CSS & Javascript kode

Filer til download:

Det færdige eksempel kan ses nedneunder og den fulde kode m.m.

Det færdige eksempel kan ses her og den fulde kode m.m. kan hentes på Github: https://github.com/websitecareio/snippets