我在尝试构建可用于通过Doubleclick(DFP)异步加载广告的可重用组件。我遇到的问题是在广告实际加载之前存在一些依赖关系,并且我不确定处理通信和序列的最佳方式。由于广告组件呈现在页面上的任何位置,并且不会作为父级的一部分呈现,因此我不知道如何处理它,因为我无法在父级中嵌入广告进行通信。仅保留状态并且不呈现通信的父级
有这种潜在的解决方案,但经过一番搜索,我无法找到不配合渲染在一起的例子。
“如果你不能找到它是有道理的自己状态的组件,只需创建一个新的组件,用于保持国家和地方的共同所有者部件上面的层次结构添加它。”
下面是详细信息/步骤:
1)。我首先需要加载JS http://www.googletagservices.com/tag/js/gpt.js 这会创建一个全局googletag对象。 2)。我需要设置适用于所有广告代码的全局定位(即网站名称,内容类型等)(可配置)。
例
googletag.pubads().setTargeting('site', window.location.hostname);
3)。我需要为React呈现的单个广告位定义广告位和定位。
googletag.defineSlot('/12345/zone', [[300, 250], [300, 600]], 'div-gpt-ad-300x250-0').addService(googletag.pubads()).setTargeting('pos', 'sidebar_300_1');
4)。我需要指定全局设置
googletag.pubads().collapseEmptyDivs();
googletag.pubads().enableSingleRequest();
googletag.enableServices();
5)。我需要呈现的广告位(与选项单独或全局渲染)
googletag.cmd.push(function() {
googletag.display(divIdAttribute);
});
或只是
googletag.display();
我最初创建了两个组件:加载必要的JavaScript一次DFPManager,然后一个实际处理单个广告的DFP广告管理系统。我无法弄清楚沟通。
我还需要能够根据外部事件(即ajax页面更改)重新加载单个广告,或者在用户滚动到无限滚动内容时创建新广告。
是我最好的解决方案来管理我自己的事件系统,我把组件中的侦听器依赖于外部事件,还是有更好的方法来管理?在那种情况下,我不一定需要DFPManager,因为在那里没有渲染,我准备好时可以触发事件。对于需要跟踪基于外部事件的综合浏览量的分析跟踪来说,这是一个类似的问题,但只有在第一次加载初始JavaScript(即Google Analytics(分析)跟踪js)之后。
<div id="300-250-ad"></div>
<script type="text/jsx">
/** @jsx React.DOM */
React.renderComponent(
<DFPAd size={[[300, 250], [300, 600]]} targeting={[["pos", "sidebar_300_1"]]} />,
document.getElementById('300-250-ad')
);
</script>
我可能会过时地这样做。感谢任何建议。
你是否设法编写这个可重用组件?你可以分享吗? – Unenumrated 2015-03-26 09:06:19