javascript - 如何在 SPA 中使用 Google DFA(Google Publisher Tag)?

标签 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 Exception in queued GPT command TypeError: Cannot read property 'setTargeting' of null

我安慰了 googletag 并且不是空的,并且具有相同的内容。

最佳答案

该错误不是描述性的,无法快速调试。现在,我在创建更多插槽之前先销毁之前创建的插槽,这解决了问题。使用 googletag.cmd.push

之前的行
googletag.destroySlots();

关于javascript - 如何在 SPA 中使用 Google DFA(Google Publisher Tag)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840523/

相关文章:

google-dfp - 使用Google Publisher Tag注册事件

javascript - 我怎样才能告诉 sencha cmd 停止混淆我的文件?

angular - 每次模型以 Angular 2 变化时如何调用函数?

google-analytics - 需要帮助来从Google Analytics(分析)Reporting API获取DFP和发布商收入

css - Angular2子组件破坏CSS关系

angular - Cypress 测试期间Angular FormGroup无效不正确

javascript - Google DFP 广告管理系统 - Safeframe - 展开广告

javascript - 如何在客户端扩大选择范围

JavaScript 扩展数组

javascript - Bootstrap collapse.in 需要点击两次才能隐藏侧边栏