我们有一个响应式网站,内容区域和侧边栏。当站点响应或加载到移动设备上时,侧边栏会低于内容区域。问题是侧边栏顶部的mrec现在在页面上太低了,我们需要在dom中使它更高。
所以,预渲染我会像这样弹出一些div
<div class="ad-inject-ad ad-mrec2"></div>
根据页面,位置等,可以是mrec1到3。
我还将我的侧边栏mrecs包装在可识别的类中,例如ad-medrec2
,这样我就可以在移动设备上移动它们了
$('.sidebar .ad-medrec2').appendTo('.ad-inject-ad.ad-mrec2')
这很有魅力。
但是,60-70%的时间广告消失了。结构仍然存在,您可以看到广告应该是300 + px高的容器div,但广告已经消失。
我尝试在DFP中使用refresh()
方法以及display()
方法。似乎广告已展示,但不可见。我失去了广告的可见度,而不是广告本身。
我已经读过,这可能是由于iframe和无法重置状态造成的。但是,我不确定国家是否需要刷新。
而且,为什么这一切都在三分之一的时间内起作用?
我能在这做什么?
编辑
我还查看了DFP jQuery插件,但如果可以避免,则不希望加载其他脚本。
为什么不在页面上创建第二个广告?您可以使用DFP功能defineSizeMapping根据窗口大小呈现正确的广告。
所以,我现在的成功率非常高。
首先,我移动广告。
$('.sidebar .ad-medrec2').appendTo('.ad-inject-ad.ad-mrec2');
然后,我计算出广告容器的id和槽被调用的内容,删除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);
});
这很好用。但是,我担心这会加载广告两次。在我能提出更好的选择之前,我会继续这样做。
您可以使用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});