移动 DFP 广告 post 文档加载

Moving DFP ads post document load

我们有一个带有内容区和边栏的响应式网站。当网站响应或加载到移动设备上时,侧边栏位于内容区域下方。问题是侧边栏顶部的 mrec 现在在页面上太低了,我们需要在 dom.

中将其调高

所以,预渲染我像这样弹出一些 divs

<div class="ad-inject-ad ad-mrec2"></div>

根据页面、位置等,可以是 mrec1 到 3。

我还将侧边栏 mrecs 包装在可识别的 类 中,例如 ad-medrec2 这样我就可以在移动设备上移动它们

$('.sidebar .ad-medrec2').appendTo('.ad-inject-ad.ad-mrec2')

这很有效。

但是,60 - 70% 的时间广告会消失。结构仍然存在,您可以看到容器 div 高 300 像素,广告 应该 在那里,但广告不见了。

我试过在 DFP 中使用 refresh() 方法以及 display() 方法。广告 似乎显示了 ,但不可见。我失去了对广告的可见性,而不是广告本身。

我了解到这可能是由 iframe 及其无法重置状态引起的。但是,我不确定状态是否需要刷新。

而且,为什么三分之一的时间都有效?

我可以在这里做什么?

编辑

我也看过 DFP jQuery 插件,但如果可以避免的话,我宁愿不加载 另一个 脚本。

所以,我现在这个工作的成功率相当高。

首先,我移动广告。

$('.sidebar .ad-medrec2').appendTo('.ad-inject-ad.ad-mrec2');

然后,我弄清楚广告容器的id和slot叫什么,删除div的内容,再次调用googletag函数重新填充。

mrec2_id = $('.ad-medrec2').attr('id');
mrec2_slot_name = mrec2_id.substr(0, mrec2_id.indexOf('-wrapper'))
$('#' + mrec2_slot_name).children().remove();
googletag.cmd.push(function() {
  googletag.display(mrec2_slot_name);
});

效果很好。但是,我担心这会加载两次广告。在我想出更好的选择之前,我会继续这样做。

为什么不在您的网页上创建第二个广告单元? 您可以使用 DFP 函数 defineSizeMapping 根据 window 尺寸呈现正确的广告。

您可以使用 changeCorrelator(GPT 参考)重新加载广告而不获取新的展示次数。

// This call to refresh fetches a new ad for slot1, without changing the
// correlator.
googletag.pubads().refresh([slot1], {changeCorrelator: false});

// This call to refresh fetches a new ad for each slot, without changing
// the correlator.
googletag.pubads().refresh(null, {changeCorrelator: false});

参考:https://developers.google.com/doubleclick-gpt/reference