我希望将 Google AdSense 广告融入响应式设计(特别是使用Twitter Bootstrap)。
挑战在于,通过响应式设计,容器的宽度可能会根据浏览器窗口的宽度而变化。虽然这是响应式设计的主要优势之一,但很难适应固定宽度的内容,例如广告。例如,对于使用至少 1200 像素宽的浏览器查看页面的用户,给定的容器可能是 300 像素宽。但是在一个 768px 宽的浏览器窗口中,同一个容器可能只有 180px 宽。
我正在寻找 JavaScript (jQuery?) 解决方案来加载适合容器宽度的最大广告格式。
假设我有以下广告位(广告格式):
name width x height slot_id
slot_180 180 x 160 1234567890
slot_250 250 x 250 2345678901
slot_300 300 x 250 3456789012
slot_336 336 x 280 4567890123
slot_728 728 x 90 5678901234
这是我需要包含的脚本:
<script type="text/javascript"><!--
google_ad_client = "ca-ABCDEFGH";
google_ad_slot = "[###slot_id###]";
google_ad_width = [###width###];
google_ad_height = [###height###];
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>';
这是一些示例html:
<body>
<div class="row">
<div class="span3"><p>Lorem ipsum</p></div>
<div class="span3" id="adSlot1"><!-- [### INSERT AD 1 HERE ###] --></div>
<div class="span3"><p>Lorem ipsum</p></div>
<div class="span3"><p>Lorem ipsum</p></div>
</div>
<div class="row">
<div class="span4" id="adSlot2"><!-- [### INSERT AD 2 HERE ###] --></div>
<div class="span4"><p>Lorem ipsum</p></div>
<div class="span4" id="adSlot3"><!-- [### INSERT AD 3 HERE ###] --></div>
</div>
</body>
我想显示适合给定容器的最大广告位。
例如:
如果#adSlot1 是 300 像素宽,让我们显示slot_300
(或者更确切地说是 id:3456789012
及其在 AdSense JavaScript 中的宽度和高度)。
现在假设您在另一台设备上查看页面,#adSlot1 现在是 480 像素宽。现在让我们使用slot_336
. 1000px 宽的元素?使用slot_728
. 得到它?
请注意,渲染所有不同的插槽并且仅.show()
/.hide()
取决于宽度是违反 Google 的 TOS 的。相反,如果调用了广告 JavaScript,则它必须在页面上可见。(想象一下,如果将隐藏广告计入展示次数,这将如何搞砸每个人的报告!)
我也不太关心人们在浏览页面时会拉伸和缩小浏览器窗口。但是,如果对此有精明的答案,则可以加分。在那之前,这可以在每个页面加载时加载一次。
你认为最好、最优雅的方法是什么?