不要同时加载 Owl Carousel 中的所有 iFrame

问题描述

我有一个在 Owl Carousel 滑块中包含 3 个 iFrame 的网站。它需要很多性能,因为它加载了我需要显示的 3D-CGI 内容。单个 iFrame 在几秒钟内加载,这没关系,但它会同时加载所有 3 个 iFrame,这将导致加载时间很长,一些较旧的智能手机无法处理。

如何让它停止加载所有 3 个 iFrame 并在查看时加载每个 iFrame?

JsFiddle

$('.carousel2').owlCarousel({
    loop:true,autoplay:false,dotsEach: false,responsiveClass:true,mouseDraggable: false,navText : ['<i class="fa fa-angle-left" aria-hidden="true"></i>','<i class="fa fa-angle-right" aria-hidden="true"></i>'],responsive:{
        0:{
            items:1,margin: 10,dots:true,nav:true,loop:true
        },600:{
            items:1,margin: 100,1000:{
            items:1,loop:true
        }
    }
})

// On Scroll:
// Change Header from Transparent to white and back and from absolute to fixed
window.onscroll = function() {
    // Change iframe data-src to src to render it when its in view
    // && window.matchMedia("(min-width: 680px)").matches
    if ( window.pageYOffset > 150 ) {
      var iframe1=$('.myIframe1');
      var iframe2=$('.myIframe2');
      var iframe3=$('.myIframe3');
      if (iframe1.data('src')){
          iframe1.prop('src',iframe1.data('src')).data('src',false);
      }
      if (iframe2.data('src')){
          iframe2.prop('src',iframe2.data('src')).data('src',false);
      }
      if (iframe3.data('src')){
          iframe3.prop('src',iframe3.data('src')).data('src',false);
      }
    }
}
.space {
  height: 200px;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.css" integrity="sha512-UTNP5BXLIptsaj5WdKFrkFov94lDx+eBvbKyoe1YAfjeRPC+gT5kyZ10kOHCfNZqEui1sxmqvodNUx3KbuYI/A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.css" integrity="sha512-OTcub78R3msOCtY3Tc6FzeDJ8N9qvQn1Ph49ou13xgA9VsH9+LRxoFU6EqLhW4+PKRfU+/HRexmsZXHEkpYoOA==" crossorigin="anonymous" referrerpolicy="no-referrer" />

<div class="space"></div>
<div class="interactive_desktop">
  <div class="carousel2 owl-carousel owl-theme">
      <div class="item products_3_img">
      <iframe class="myIframe1" style="width: 800px; height: 800px;" src="about:blank" data-src="https://de.wikipedia.org/wiki/Wikipedia:Hauptseite" ></iframe>
      </div>
      <div class="item products_3_img">
      <iframe class="myIframe2" style="width: 800px; height: 800px;" src="about:blank" data-src="https://de.wikipedia.org/wiki/Portal:Wikipedia_nach_Themen"></iframe>
      </div>
      <div class="item products_3_img">
      <iframe class="myIframe3" style="width: 800px; height: 800px;" src="about:blank" data-src="https://de.wikipedia.org/w/index.PHP?title=Portal:Wikipedia_nach_Themen&oldid=212000847"></iframe>
      </div>
  </div>
</div>



<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.js" integrity="sha512-gY25nC63ddE0LcLPhxUJGFxa2GoIyA5FLym4UJqHDEMHjp8RET6Zn/SHo1sltt3WuVtqfyxECP38/daUc/WVEA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

解决方法

owl carousel 有一个选项可以激活延迟加载。

$('.owl-carousel').owlCarousel({ 项目:4, 懒加载:真, 循环:真, 保证金:10 });