如何在 SPA 中使用 Google DFA(Google 发布商代码)?
How to use Google DFA (Google Publisher Tag) in SPA?
我在 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);
}
}
仪表板加载并显示广告,但是当我 return 从另一个组件返回时,它给出了以下错误:
pubads_impl_265.js:1 Exception in queued GPT command TypeError: Cannot
read property 'setTargeting' of null
我安慰了 googletag
不为空,内容相同
该错误不是描述性的,无法快速调试。现在,我在创建更多插槽之前先销毁之前创建的插槽,这解决了问题。使用 googletag.cmd.push
之前的行
googletag.destroySlots();
我在 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);
}
}
仪表板加载并显示广告,但是当我 return 从另一个组件返回时,它给出了以下错误:
pubads_impl_265.js:1 Exception in queued GPT command TypeError: Cannot read property 'setTargeting' of null
我安慰了 googletag
不为空,内容相同
该错误不是描述性的,无法快速调试。现在,我在创建更多插槽之前先销毁之前创建的插槽,这解决了问题。使用 googletag.cmd.push
googletag.destroySlots();