Dsgvo - youtube

Aus Wikizone
Wechseln zu: Navigation, Suche

Quelle: https://easyrechtssicher.de/youtube-videos-dsgvo-konform-einbinden/ (2018-07)

Dennoch musst du nicht auf YouTube-Videos auf deinem Webprojekt verzichten. Durch folgende Aktionen ist es relativ sicher.

Nutze bei der Einbettung immer die „NoCookie“-Option. Erweitere in deinem CookieConsent den Erklärungstext um „YouTube-Videos werden erst nach akzeptieren und neuladen der Seite angezeigt.“ Erweitere deine Datenschutzerklärung um den Passus „Übrige Einbindung von Diensten und Inhalten Dritter“ Wenn du ein YouTube-Video mit dem Code (der dir von YouTube bereitgestellt wird) einbindest, dann ändere das Attribut „src“ zu „data-src“. So verhinderst du, dass die Seite geladen wirst.

<iframe src=“https://www.youtube-nocookie.com/embed/kZTP5_SMqD8?rel=0&showinfo=0“ width=“560″ height=“315″ frameborder=“0″ allowfullscreen=“allowfullscreen“></iframe>
<iframe data-src=“https://www.youtube-nocookie.com/embed/kZTP5_SMqD8?rel=0&showinfo=0“ width=“560″ height=“315″ frameborder=“0″ allowfullscreen=“allowfullscreen“></iframe>

Jetzt musst du nur noch folgenden JavaScript-Cod einfügen. Dieser lädt das YouTube-Video, wenn der CookieConsent akzeptiert wurde. Im Footer (vorausgesetzt du nutzt Jquery. Sonst muss die Ansprache des Tags angepasst werden).

<script>

if(hasAcceptedCookieConsent()){
   var ytelement = .content iframe;
   var yturl = jQuery(ytelement).data(src);
   jQuery(ytelement).attr(src,yturl);
}

function hasAcceptedCookieConsent(){
   var hasCookie;
   var ca = document.cookie.split(;);
   hasCookie = false;
   for (var i=0; i<ca.length; i++) {
       single = ca[i].split(=);
       cookie_name = single[0].trim();
       if(cookie_name===cookieconsent_dismissed){
           hasCookie = true;
       }
   }
   return hasCookie;
}

</script>

Im Grunde ist es eine Zwei-Klick Lösung. Das könnte sogar im Weitblick auf die EU-Privacy Richtline ab 2019 gut gelöst sein.

Weitere Beispiele[Bearbeiten]

Klick Tipp[Bearbeiten]

Der Newsletterversender hat das so gelöst:

(function ($) {
    
    $(document).ready(function () {
        getYoutubeAPI();
    
        $("[data-type='play-video']").click(function() {
            
            var src = $(this).data().videoSrc;
            var attr = "enablejsapi=1&rel=0&showinfo=0&iv_load_policy=3&playsinline=1";
            
            if (src.indexOf('?') !== -1) {
                src += '&'+attr;
            }
            
            else {
                src += '?'+attr;
            }
            
            var id = makeid();
            
            var iframe = $("<iframe id='" + id + "' src='" + src + "' frameborder='0' ></iframe>");
            $(this).next().replaceWith(iframe);
            
            $(this).hide();
            
            initPlayer(id)
                .then(function (player) {
                    addPlayEvent(player, iframe);
                    // player.player.playVideo();
                })
                .catch(function (error) {
                    console.log(error);
                })
        });
    
        let initPlayer = function (id) {
            return new Promise (function(resolve, reject) {
                let counter = 0;
                let player;
                let loading;
            
                let options = {
                    iframeSelector: "#" + id,
                    playbackControl: false
                };
            
                if ((typeof YT !== 'undefined') && typeof YT.Player !== 'undefined') {
                    player = new PlayerYT(options);
                    resolve(player)
                }
                else {
                    loading = setInterval(checkIframeAPILoaded, 250);
                }
            
                function checkIframeAPILoaded() {
                    if (typeof YT !== 'undefined' && YT.Player) {
                        clearInterval(loading);
                        player = new PlayerYT(options);
                        resolve(player);
                    }
                    counter++;
                }
            
                if (counter > 20) {
                    reject(new Error("Request to youtube iframe api timed out"));
                }
            })
        };
    
        let addPlayEvent = function (player, iframe) {
            
            player.onPlayerReadyCallbacks.push(function (event) {
                event.target.playVideo();
            });
            
        };
    
        function getYoutubeAPI() {
            var tag = document.createElement('script');
        
            tag.src = "https://www.youtube.com/iframe_api";
            var firstScriptTag = document.getElementsByTagName('script')[0];
            firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
        
            var tag3 = document.createElement('script');
        
            tag3.src = "/content_includes/js/libs/lodash.js";
            var firstScriptTag3 = document.getElementsByTagName('script')[0];
            firstScriptTag.parentNode.insertBefore(tag3, firstScriptTag3);
        
            var tag2 = document.createElement('script');
        
            tag2.src = "/content_includes/js/case_study/PlayerYT.js";
            var firstScriptTag2 = document.getElementsByTagName('script')[0];
            firstScriptTag.parentNode.insertBefore(tag2, firstScriptTag2);
        
        }
    
        function makeid() {
            var text = "";
            var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        
            for (var i = 0; i < 5; i++)
                text += possible.charAt(Math.floor(Math.random() * possible.length));
        
            return text;
        }
    });
    
})(jQuery);

Im Quelltext legt er einen dicken Play Button über den Player. Ein Hinweis fehlt, aber das kann man natürlich anpassen.

<div style='position: absolute;
                        margin: auto;
                        top: 0;
                        left: 0;
                        bottom: 0;
                        right: 0;
                        z-index: 10;
                        width: 120px;
                        height: 90px;
                        background-image: url("/content_includes/img/webinar/ccp/youtube-play.png");
                        background-position: top center;
                        background-repeat: no-repeat;
                        background-size: contain;
                        cursor: pointer;
                        -webkit-animation: button-grow 1s infinite;
                        -moz-animation: button-grow 1s infinite;
                        -o-animation: button-grow 1s infinite;
                        animation: button-grow 1s infinite;
                        -moz-transform: translate(-50%, -50%);
                        -o-transform: translate(-50%, -50%);
                        -ms-transform: translate(-50%, -50%);
                        -webkit-transform: translate(-50%, -50%);
                        transform: translate(-50%, -50%);' class='youtube-play on-hover' data-type='play-video' data-video-src='//www.youtube.com/embed/uIqD4Gvv3HY?rel=0'>
  </div>
  <img class='video-thumbnail' src='data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD... normaes bild geht sicher auch'/>
</div>