首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决slotRenderEnded中出现错误的google标签多个广告?

如何解决slotRenderEnded中出现错误的google标签多个广告?
EN

Stack Overflow用户
提问于 2022-11-13 07:48:10
回答 1查看 22关注 0票数 0

我使用nuxt组合api。每一页都有许多不同的广告,所以我创建了一个可合成的结构来获取广告。这很好,但例如,如果我在一个页面中有5个广告,它将在slotRenderEnded函数中呈现25次。(x^2次)

useAds.js

代码语言:javascript
运行
复制
import { ref } from '@nuxtjs/composition-api';

let slots = {};

const useAds = () => {
  const isAdLoaded = ref(null);

  const createAd = ({ path, size, id }) => {
    googletag.cmd.push(() => {
      googletag.pubads().collapseEmptyDivs();
      slots[id] = googletag.defineSlot(path, size, id).addService(googletag.pubads());
      googletag.pubads().enableSingleRequest();
      googletag.enableServices();
      googletag.display(id);
      googletag.pubads().addEventListener('slotRenderEnded', event => {
        console.log('slotRenderEnded');

        if (event.slot.getSlotElementId() === id) isAdLoaded.value = !event.isEmpty;
      });
    });
  };

  const destroyAds = id => {
    if (window.googletag && window.googletag.apiReady && slots[id]) {
      window.googletag.destroySlots([slots[id]]);
      window.googletag.pubads().refresh([slots[id]]);
    }
  };

  return { isAdLoaded, createAd, destroyAds };
};

export default useAds;

控制台中的

代码语言:javascript
运行
复制
25 slotRenderEnded
EN

回答 1

Stack Overflow用户

发布于 2022-11-15 11:47:12

看起来,每次定义插槽时都要创建/附加一个事件。这些事件被附加到GPT实例化中,当呈现一个广告时,每个已注册的侦听器都会被触发。

您需要每页定义一次事件列表器(在您的槽创建工作流之外),当您定义GPT时,每次定义和呈现一个时隙时,将使用其“时隙”属性/ GPT参数触发泛型/全局事件列表器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74419298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档