使用IntersectionObserver延迟加载DFP广告

时间:2018-06-25 15:57:06

标签: javascript lazy-loading ads google-dfp intersection-observer

我正在尝试通过在广告展示后调用刷新来延迟加载广告。与解释的here类似,但使用的是IntersectionObserver

var slot;
window.googletag = window.googletag || {}
window.googletag.cmd = window.googletag.cmd || []
window.googletag.cmd.push(function() {
  slot = googletag.
            defineSlot('/#{AdsHelper::DFP_NETWORK_CODE}/#{ad_unit}', [#{x}, #{y}], '#{element_id}').
            addService(googletag.pubads());

  googletag.pubads().enableSingleRequest();
  googletag.pubads().disableInitialLoad();
  googletag.enableServices();
});

googletag.cmd.push(function() {
  googletag.display('#{element_id}');
});

var callback = function(entries, observer) {
  entries.forEach(entry => {
    if (entry.intersectionRatio > 0) {
      console.log(entry.target.id)
      observer.unobserve(entry.target)
      googletag.cmd.push(function() {
        googletag.pubads().refresh([slot]);
      });
    }
  });
};

var observer = new IntersectionObserver(callback);

observer.observe(document.querySelector('##{element_id}'));

正在正确调用回调(正确的时间并使用正确的slot值),并且加载了一些广告,但其他广告则返回此错误。

enter image description here

任何人都知道哪里出了问题,或者在其他地方看到了类似的东西?

谢谢

0 个答案:

没有答案