繁体   English   中英

向下滚动加载 iframe

[英]load iframe on scroll down

我有一个带有 iframe 的页面...目前我使用此代码在点击时加载 iframe ..

这是我的代码

$('.a').click(function(){
    var iframe = $("#b");
    iframe.attr("src", iframe.data("src")); 
});

html:

<button class='a'>Load</button>
<iframe id='b' src='' data-src='index.php'></iframe>

但我也想在向下滚动时加载 iframe(距顶部 500 像素)

有人可以帮助我如何做到这一点...

谢谢

试试这个:

$(window).scroll(function() {
    var height = $(window).scrollTop();
    if(height  > 500) {
        var iframe = $("#b");
        iframe.attr("src", iframe.data("src"));
    }
});

如果您只想在滚动超过 500 次后加载一次,您可以添加标志并将其在页面加载时设置为 false。 然后在滚动事件中将其设置为 true 并在加载 iframe 之前检查此标志

示例:

var isLoaded = false;
$(window).scroll(function() {
    var height = $(window).scrollTop();
    if(height  > 500) {
        if(!isLoaded){
            var iframe = $("#b");
            iframe.attr("src", iframe.data("src"));
            isLoaded = true;
        }
    }
});

这个想法是在用户每次滚动页面时向在 window 对象上调度的 scroll 事件添加一个回调。 如果 iframe 尚未加载且滚动值高于 500px,则此回调用于加载 iframe。

(function () {
  var iframeLoaded = false;
  function loadIframeOnScroll() {
    if (window.scrollY >= 500 && !iframeLoaded) {
      loadIframe();
    }
  };

  function loadIframe() {
    if (!iframeLoaded) {
      var $iframe = $('#b');
      $iframe.attr('src', $iframe.data('src'));
      window.removeEventListener('scroll', loadIframeOnScroll);
      iframeLoaded = true; // could be placed in the onload callback of the iframe
    }
  }

  window.addEventListener('scroll', loadIframeOnScroll);
  document.querySelector('.a').addEventListener('click', loadIframe);
})();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM