Google 正在注册事件的发布商代码
Google Publisher Tag registering to Events
我查看了 Google 发布商代码参考并决定我可以向我的广告位添加一些事件。如果我只定义了一个插槽,效果会很好。
如果我添加更多插槽,事件会在我的控制台上重复我有插槽的次数。
所以,如果我这样做:
<script type='text/javascript'>
googletag.cmd.push(function() {
var slot1 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
var slot2 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
var slot3 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().addEventListener('slotRenderEnded', function(event) {
console.log('Slot has been rendered:');
});
googletag.enableServices();
});
</script>
我的 console.log 是 3x "Slot has been rendered:"。如果我从 defineSlot 部分删除 .addService 中的两个,它只会 console.log 一次,但随后不会呈现广告。
有没有办法在不破坏其他一切的情况下删除额外的日志记录?一段时间后它会变得非常混乱。
谢谢!
娜斯塔莎,
输出重复三次的原因是您注册的事件处理程序侦听 'slotRenderEnded' 事件,每次 插槽呈现时都会发生这种情况。由于您的示例具有三个插槽,因此该事件将触发三次。您可以通过检查传入的事件对象来查看哪个插槽触发了回调。
googletag.pubads().addEventListener('slotRenderEnded', function(event) {
console.log('Slot has been rendered:');
console.log(event); //inspect event
console.log(event.slot); //inspect slot
});
即使事件前三次,您也可以通过比较事件中的插槽来添加基于插槽的逻辑,如下所示:
var slot1 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
googletag.pubads().addEventListener('slotRenderEnded', function(event) {
if(slot1 === event.slot){
console.log('slot1 has been rendered');
}
});
您可以在 GPT documentation
中阅读更多内容
我查看了 Google 发布商代码参考并决定我可以向我的广告位添加一些事件。如果我只定义了一个插槽,效果会很好。 如果我添加更多插槽,事件会在我的控制台上重复我有插槽的次数。
所以,如果我这样做:
<script type='text/javascript'>
googletag.cmd.push(function() {
var slot1 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
var slot2 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
var slot3 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().addEventListener('slotRenderEnded', function(event) {
console.log('Slot has been rendered:');
});
googletag.enableServices();
});
</script>
我的 console.log 是 3x "Slot has been rendered:"。如果我从 defineSlot 部分删除 .addService 中的两个,它只会 console.log 一次,但随后不会呈现广告。
有没有办法在不破坏其他一切的情况下删除额外的日志记录?一段时间后它会变得非常混乱。
谢谢!
娜斯塔莎,
输出重复三次的原因是您注册的事件处理程序侦听 'slotRenderEnded' 事件,每次 插槽呈现时都会发生这种情况。由于您的示例具有三个插槽,因此该事件将触发三次。您可以通过检查传入的事件对象来查看哪个插槽触发了回调。
googletag.pubads().addEventListener('slotRenderEnded', function(event) {
console.log('Slot has been rendered:');
console.log(event); //inspect event
console.log(event.slot); //inspect slot
});
即使事件前三次,您也可以通过比较事件中的插槽来添加基于插槽的逻辑,如下所示:
var slot1 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
googletag.pubads().addEventListener('slotRenderEnded', function(event) {
if(slot1 === event.slot){
console.log('slot1 has been rendered');
}
});
您可以在 GPT documentation
中阅读更多内容