У меня есть несколько объявлений в SPA.Некоторые загружаются лениво, некоторые нет.Все они обновятся при обновлении таргетинга.Из-за проблем с дублированием коррелятора для объявлений одинакового размера меня попросили отключить один запрос.Когда я удаляю googletag.pubads().enableSingleRequest()
, ничего не происходит.Нет запросов на рекламу, нет ошибок, ничего.Я посмотрел, остались ли у меня методы SRA, когда я удалил этот вызов, но ничего не нашел.Я не знаю, пропускаю ли я что-то здесь, но это не работает в этом примере.
Что работает, если я обертываю refresh()
в setTimeout
функцию 0
, которая заставляет менядумаю, что это состояние гонки.Но это нереальное решение.
Пожалуйста, не предлагайте решения по вопросу коррелятора, поскольку я знаю, что есть googletag.pubads().updateCorrelator();
Все, что я хочу, - это чтобы мои объявления делали несколько запросов без тайм-аутов.
<html>
<body>
<script src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
window.googletag = window.googletag || {};
window.googletag.cmd = window.googletag.cmd || [];
</script>
<script>
const targeting = {
betagrp: 'testaxl',
someTargeting: 'awesome',
};
const altTargeting = {
betagrp: 'testaxl',
someTargeting: 'sauce',
};
let currTargeting = targeting;
const adUnit = '/18353239/testatc/research/search/conreviews';
const adSlots = [];
function setTargeting(obj, targeting) {
Object.entries(targeting).forEach(([key, value]) => {
obj.setTargeting(key, value);
});
}
function addSlot(adUnit, sizes, id, targeting) {
const slot = window.googletag
.defineSlot(
adUnit,
sizes,
id,
)
.addService(googletag.pubads());
setTargeting(slot, targeting);
adSlots.push(slot);
}
function toggleTargeting() {
window.googletag.cmd.push(function() {
currTargeting = currTargeting.someTargeting === targeting.someTargeting ? altTargeting : targeting;
window.googletag.pubads().clearTargeting();
setTargeting(window.googletag.pubads(), currTargeting);
window.googletag.pubads().refresh(adSlots);
});
}
window.googletag.cmd.push(function() {
window.googletag.pubads().clearTargeting();
setTargeting(window.googletag.pubads(), currTargeting);
window.googletag.pubads().disableInitialLoad();
window.googletag.pubads().enableAsyncRendering();
//window.googletag.pubads().enableSingleRequest();
window.googletag.pubads().collapseEmptyDivs();
window.googletag.enableServices();
addSlot(
adUnit,
[
[728, 93]
],
'banner',
{
pos: 'a',
prd: 'rc12',
},
);
addSlot(
adUnit,
[
'fluid',
[728, 201],
[728, 200]
],
'ad_lstg_1',
{
pos: 'c',
prd: 'rc12',
},
);
addSlot(
adUnit,
[
'fluid',
[728, 200]
],
'ad_lstg_2',
{
pos: 'd',
prd: 'rc12',
},
);
addSlot(
adUnit,
[
'fluid',
[728, 201],
[728, 200]
],
'ad_lstg_5',
{
pos: 'j',
prd: 'rc12',
},
);
addSlot(
adUnit,
[
'fluid',
[728, 200]
],
'ad_lstg_6',
{
pos: 'k',
prd: 'rc12',
},
);
addSlot(
adUnit,
[
'fluid',
[728, 90],
],
'footer',
{
pos: 'e',
prd: 'rc12',
},
);
window.googletag.pubads().refresh(adSlots);
});
</script>
<button
onClick="toggleTargeting()"
>
Toggle Targeting
</button>
<div id='banner'>
<script>
googletag.cmd.push(function() { googletag.display('banner'); });
</script>
</div>
<p />
<div id='ad_lstg_1'>
<script>
googletag.cmd.push(function() { googletag.display('ad_lstg_1'); });
</script>
</div>
<p />
<div id='ad_lstg_2'>
<script>
googletag.cmd.push(function() { googletag.display('ad_lstg_2'); });
</script>
</div>
<p />
<div id='ad_lstg_5'>
<script>
googletag.cmd.push(function() { googletag.display('ad_lstg_5'); });
</script>
</div>
<p />
<div id='ad_lstg_6'>
<script>
googletag.cmd.push(function() { googletag.display('ad_lstg_6'); });
</script>
</div>
<p />
<div id='footer'>
<script>
googletag.cmd.push(function() { googletag.display('footer'); });
</script>
</div>
</body>