如何在SPA中使用Google DFA(Google发布商代码)?

时间:2018-10-16 16:58:36

标签: javascript angular google-dfp

我在Angular中使用Google DFA(gpt.js)。

第一次显示广告正常,但是第二次显示空错误。

我有一个具有以下方法的指令,该方法在OnInit方法中调用:

addGoogleAd() {
  const googletag: any = window['googletag'] || {};

  if (window['googletag'] && googletag.apiReady) {
    googletag.cmd = googletag.cmd || [];

    googletag.cmd.push(() => {
      googletag.pubads().setTargeting('site', 'weatherinnovations');
      googletag.pubads().enableSingleRequest();

      googletag.defineSlot('/xx/weather_innovations', [[160, 600]], 'div-gpt-ad-xx-1')
        .setTargeting('position', ['s1']).addService(googletag.pubads());
      googletag.defineSlot('/xx/weather_innovations', [[300, 250]], 'div-gpt-ad-xx-2')
        .setTargeting('position', ['s2']).addService(googletag.pubads());
      googletag.defineSlot('/xx/weather_innovations', [[300, 250]], 'div-gpt-ad-xx-3')
        .setTargeting('position', ['s3']).addService(googletag.pubads());
      googletag.defineSlot('/76643716/weather_innovations', [[728, 90]], 'div-gpt-ad-xx-4')
        .setTargeting('position', ['s4']).addService(googletag.pubads());
      googletag.defineSlot('/xx/weather_innovations', [[728, 90]], 'div-gpt-ad-xx-5')
        .setTargeting('position', ['s5']).addService(googletag.pubads());

      googletag.pubads().collapseEmptyDivs(true, true);
      googletag.enableServices();
    });
    googletag.display(this.id);
  }
}

仪表板加载并显示广告,但是当我从另一个组件返回时,出现以下错误:

  

pubads_impl_265.js:1排队的GPT命令TypeError中的异常:无法   读取属性'setTargeting'为空

我使用了googletag,但它不是空的,并且内容相同。

1 个答案:

答案 0 :(得分:0)

该错误不能快速调试该错误。现在,在创建更多插槽之前,我将销毁先前创建的插槽,从而解决了该问题。在googletag.cmd.push

之前使用行
googletag.destroySlots();