在https://bm-translations.de/上,我嵌入了一个YouTube iframe,其中嵌入了YouTube的nocookie域。为了优化速度,我仅通过lazyload加载缩略图。这是我的代码:
//youtube lazyload thumbnail
( function() {
var youtube = document.querySelectorAll( ".youtube" );
for (var i = 0; i < youtube.length; i++) {
var source = "https://img.youtube-nocookie.com/vi/"+ youtube[i].dataset.embed +"/sddefault.jpg";
var image = new Image();
image.src = source;
image.addEventListener( "load", function() {
youtube[ i ].appendChild( image );
}( i ) );
youtube[i].addEventListener( "click", function() {
var iframe = document.createElement( "iframe" );
iframe.setAttribute( "frameborder", "0" );
iframe.setAttribute( "allowfullscreen", "" );
iframe.setAttribute( "src", "https://www.youtube-nocookie.com/embed/"+ this.dataset.embed +"?rel=0&iv_load_policy=3&autoplay=1" );
this.innerHTML = "";
this.appendChild( iframe );
} );
};
} )();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"></script>
<iframe name="frame" style="display:none;"></iframe>
不幸的是,它设置了一堆cookie:
据我从WordPress Borlabs-Cookie插件了解到的那样,无需设置cookie就可以使用YouTube iframe,例如,您可以在此处看到(滚动到页面的末尾):https://keimster.de/ueber-das-keimen/
我想知道是否有人知道如何调整代码或任何其他好的解决方案,以使其在没有cookie横幅的情况下可以准备好gdpr(我没有技术选择来保存同意书等,也可以让用户选择退出)?
最佳答案
globaljs.js
中的代码从youtube.com
加载。 script
标记内的代码嵌入到来自www.youtube-nocookie.com
最后一步:
对于缩略图,
img.youtube-nocookie.com
不起作用。您一直都在从youtube.com
获取缩略图。将您的缩略图加载代码更改为:
var source = "https://i1.ytimg.com/vi/"+ youtube[i].dataset.embed +"/sddefault.jpg";
关于javascript - 延迟加载缩略图时阻止YouTube Cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64604459/