21

我正在开发一个 javascript 渲染的移动网络插页式广告。布局是完全响应式的,因此它将占用提供的屏幕\iframe 的 100%。

我现在希望通过 DFP 显示插页式广告。

起初,我创建了一个尺寸大小的广告单元 (320x480),效果很好,但插页式广告仅限于 iframe 的边界。

我发现了一种名为Out-of-page的新订单项类型。该文件指出:

它们可能包括弹出式广告和浮动订单项,有时也称为插页式广告。

但是当我尝试在测试站点中嵌入插页式广告时,会发生 iframe 保持 1x1,使插页式广告不可见(如果我使用调试器手动放大它,我会看到)


我的设置:

  • 广告资源尺寸为 1x1 且页外的订单项
  • 使用我的代码段进行创作
  • 广告单元定义为尺寸 1x1

我在文档中读到:

如果您使用的是 DoubleClick 代码广告素材,则必须确保在 DoubleClick 代码的另一端(即另一个 DFP 广告联盟)投放的广告素材代码已针对页外广告单元正确编码。

就 DFP 页外插页式广告而言,广告“编码正确”是什么意思?如何强制插页式广告占据屏幕的所有尺寸?

4

3 回答 3

19

在咨询了 DFP 支持后,我能够按照以下步骤创建页外插页式广告单元:

  1. 创建一个新的广告单元,广告资源大小为“页外”
  2. 创建一个新的订单项和一个广告资源尺寸为“页外”的移动广告,此订单项定位到以前的广告单元。
  3. 在 Inventory 选项卡下生成新标签,在第 2 步中选择“Enable synchronous requests”和“Out of Page”。“Enable synchronous requests”似乎是完成这项工作的关键。

    根据谷歌支持:

    我们通常建议我们的发布商在投放页外(插页式)广告时实施 Sync GPT,因为广告素材在元素而不是 iFrame 中呈现

  4. 将此标签放在测试页面中(带有必要的 html、head 和 body 标签),瞧!

于 2015-05-14T11:43:26.610 回答
6

不确定这是您需要的,而且我对 DFP 没有太多经验,但我遇到了一个类似的问题,我通过手动管理 iframe 的大小解决了这个问题。也许这也可以帮助你。

DFP API 有一个可以让您知道广告已完成呈现的事件,我建议您将 iframe 属性更改为全宽,并且任何高度都适用于展示位置。

假设您的页面上有 jQuery,这可以很容易地完成。设置 DFP 插件(调用defineSlot等)后,您可以为此事件添加监听器,如下所示:

googletag.pubads().addEventListener('slotRenderEnded', function(){
  var $adFrame = $('#id-of-the-iframe');
  $adFrame.css({width: '100%', height: '500px'});
});

这在此处的 DFP 文档中进行了概述。

希望这可以帮助。

编辑:发布后,我意识到我发布的代码示例来自 DFP GPT 库。也许你没有使用这个。这个 SO 问题有一个链接,指向某人创建的用于侦听 DFP 触发的事件的库。也许您可以使用它并使用我描述的技术?

再次 - 希望这会有所帮助:)

于 2015-05-11T20:18:39.950 回答
0

我刚碰到这个。似乎 DFP 已经摆脱了启用同步请求选项。出于几个原因,这从来都不是一个很好的解决方案(正如其他人指出的那样)。首先,如果您在同一页面上有异步请求,它就不能很好地工作。其次,它是“阻止”并减慢您的页面速度。

友好的 iFrame

似乎现在首选的方法是使用“Friendly iFrame”。要使用友好 iFrame,请在 DFP 中设置广告素材时,取消选中“投放到 SafeFrame”。DFP 现在会将您的广告投放到“友好 iFrame”中。友好 iFrame 是从与父窗口相同的域提供的 iFrame。由于域匹配,浏览器安全规则允许 iframe 中的 JavaScript 访问父窗口(通过window.parent.document)。现在您可以调整 iframe 的大小以使其全屏显示。为此,请在您的广告代码中添加如下内容:

window.parent.document.getElementById(window.name).style.cssText = "position: fixed; top: 0; left: 0; bottom: 0; width: 100%; height: 100%; margin: 0;";

如果您的广告有办法自行关闭,请确保在关闭时也将 Friendly iFrame 缩小(否则展开的 Friendly iFrame 会阻止底层页面上的鼠标操作)。你可以这样做:

window.parent.document.getElementById(window.name).style.cssText = "position: relative; width: 0px; height: 0px;";

几个笔记

出于安全原因,只要有可能,SafeFrame 是投放广告的首选方式。SafeFrame 提供了一个 API 用于在不允许完全访问的情况下与父窗口进行通信。SafeFrame 包含用于增加 iFrame 大小的展开选项,但是,DFP 的 SafeFrame 实施似乎不允许您展开到全屏。出于这个原因,似乎最好将友好 iFrame 用于插页式广告。您可以在此处试用 DFP 的 SafeFrame 实施。

请注意,您应该只允许您完全信任的内容在 Friendly iFrame 中运行,因为它可以做很多恶意的事情(例如窃取用户会话 cookie 等)。

于 2019-10-25T18:03:02.170 回答