Объявления GPT - сбой обновления при использовании отложенной загрузки

Я пытаюсь использовать недавно представленный вариант googletag.PubAdsService.enableLazyLoad с объявлениями DFP. Он отлично работает во время начальной загрузки страницы, но когда я пытаюсь обновить рекламу на странице, я получаю следующую ошибку:

Исключение в поставленной в очередь команде GPT TypeError: невозможно прочитать свойство unobserve, равное нулю в Nt (pubads_impl_242.js: 1) в pubads_impl_242.js: 1 в Object ._. Y (pubads_impl_242.js: 1) в Wt (pubads_impl_242.js: 1) pubads_impl_242.js: 1 в Vt (pubads_impl_242.js: 1) в _.V. $ A (pubads_impl_242.js: 1) в Xu (pubads_impl_242.js: 1) в Cv (pubads_impl_242.js: 1) в wv ._. h.refresh (pubads_impl_242.js: 1)

Вот мой код:

var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.slots = googletag.slots || {};
var mapping = googletag.sizeMapping()
  .addSize([0, 0], [1000, 1])
  .addSize([320, 0], [[320, 50], [300, 50]])
  .addSize([1025, 0], [970, 90])
  .build();
googletag.slots["push"] = googletag.defineSlot("/1234/sample/", [[970, 90], [320, 50], [300, 50]], "dfp-ad-banner")
  .addService(googletag.pubads())
  .setTargeting("pos", "banner")
  .defineSizeMapping(mapping);
googletag.cmd.push(function() {
  googletag.pubads().enableAsyncRendering();
  googletag.pubads().collapseEmptyDivs();
  googletag.pubads().disableInitialLoad();
  googletag.pubads().enableLazyLoad({fetchMarginPercent: 200,renderMarginPercent: 100,mobileScaling: 2.0});
});
googletag.enableServices();
...
googletag.cmd.push(function() {
  googletag.display("dfp-ad-banner");
});
...
googletag.cmd.push(function () {
        // add visibility helper classes
        googletag.pubads().addEventListener('slotRenderEnded', function (event) {
          var adClass = (event.size[0] > 1 && event.size[1] > 1) ? 'ad-visible' : 'ad-invisible';
          $('#' + event.slot.getSlotElementId()).addClass(adClass);
        });
        // load ads
        googletag.pubads().refresh(null, {changeCorrelator: false});
      });

person temkin    schedule 26.08.2018    source источник
comment
Я столкнулся с тем же, с refresh() и destroy(), вызывающими эти ошибки. Обязательным условием является наличие объявления ниже по странице, которое еще не было получено / отображено.   -  person Overflew    schedule 28.08.2018


Ответы (2)


это потому, что collapseEmptyDivs пока не совместим с enableLazyLoad. Рекомендую удалить collapseEmptyDivs.

Подробнее об этом читайте здесь, https://developers.google.com/doubleclick-gpt/reference#googletag.PubAdsService_enableLazyLoad

person Petr Mišák    schedule 07.10.2018

Проблема с обновлением и уничтожением теперь должна быть исправлена. Если вы столкнетесь с подобными проблемами в будущем, рассмотрите возможность отправки отзыва со справочной страницы разработчика. https://developers.google.com/doubleclick-gpt/reference

person mlb7687    schedule 08.10.2018