googletag динамически определенная ячейка из ответа API не работает - PullRequest
1 голос
/ 25 февраля 2020

Примечание. Я замаскировал данные в целях конфиденциальности.

У меня есть ответ API, который дает мне следующую информацию: Кроме того, ответ API является динамическим c, поэтому в зависимости от требований бизнеса я получаю 2 или 20 объявлений. информация о слоте.

{
"googletags":[
  {
     "networkId":"xyz",
     "targetedAdUnit":"Test_Offers_1",
     "adSlotCreativeSize":[
        [
           336,
           280
        ],
        [
           320,
           100
        ]
     ],
     "divGPTId":"div-gpt-ad-1"
  },
  {
     "networkId":"xyz",
     "targetedAdUnit":"Test_Offers_2",
     "adSlotCreativeSize":[
        [
           336,
           280
        ],
        [
           320,
           100
        ]
     ],
     "divGPTId":"div-gpt-ad-2"
  }
.
.
.
.
.
.
.
.
{
     "networkId":"xyz",
     "targetedAdUnit":"Test_Offers_n",
     "adSlotCreativeSize":[
        [
           336,
           280
        ],
        [
           320,
           100
        ]
     ],
     "divGPTId":"div-gpt-ad-n"
  }
 ]
}

Я использую этот ответ и определяю слот во время выполнения.

javascript код:

window.googletag = window.googletag || { cmd: [] };
function googleTags(url, cFunction) {
  const xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
      cFunction(this);
    }
  };
  xhttp.open('GET', url, true);
  xhttp.send();
}

function pushGTMtags(xhttp) {
  const tags = JSON.parse(xhttp.responseText)['googletags'];
  window.googletag.cmd.push(function () {
    for (let i = 0; i < tags.length; i++) {
      const str = `/${tags[i].networkId}/${tags[i].targetedAdUnit}`;
      const adSlotCreativeSize = tags[i].adSlotCreativeSize;
      const divGPTId = tags[i].divGPTId;
      window.googletag
        .defineSlot(
          str,
          adSlotCreativeSize,
          divGPTId
        )
        .addService(window.googletag.pubads());
    }
    window.googletag.pubads().enableSingleRequest();
    window.googletag.pubads().collapseEmptyDivs();
    window.googletag.enableServices();
  });
}

googleTags('apiUrl', pushGTMtags);

HTML: Подумайте об этом HTML как динамически изменяющийся с divGPTId. Ниже приведен только один пример. Я использую div, основанный на API response.length.

<div class="slot " id="div-gpt-ad-0">
    <script>
        googletag.cmd.push(function () {
            googletag.display('div-gpt-ad-0');
        });
    </script>
</div>

После выполнения приведенного выше кода с реальными подробностями я не вижу ошибки кода в консоли браузера. Кроме того, я не могу видеть рекламу на странице. Я что-то пропустил?

Я попытался отладить в браузере, я не получаю никакой ошибки.

...