移动 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});
我们有一个带有内容区和边栏的响应式网站。当网站响应或加载到移动设备上时,侧边栏位于内容区域下方。问题是侧边栏顶部的 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});