Google AdSense広告をレスポンシブデザインに適合させたいと考えています(特にTwitter Bootstrapを使用)。
課題は、レスポンシブデザインでは、ブラウザウィンドウの幅に応じてコンテナの幅が変わる可能性があることです。これはレスポンシブデザインの大きな強みの1つですが、広告などの固定幅のコンテンツに合わせるのは難しい場合があります。たとえば、特定のコンテナは、少なくとも1200ピクセル幅のブラウザでページを表示するユーザーのために、300ピクセル幅である可能性があります。ただし、768ピクセル幅のブラウザウィンドウでは、同じコンテナの幅は180ピクセルしかない場合があります。
コンテナの幅に合う最大の広告フォーマットをロードする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()
すべての異なるスロットをレンダリングすることは、GoogleのTOSに反することに注意してください。.hide()
代わりに、広告JavaScriptが呼び出された場合、ページに表示されている必要があります。(非表示の広告がインプレッションとしてカウントされた場合、これがすべてのレポートを台無しにすることを想像してみてください!)
また、ページ表示中にブラウザウィンドウを拡大および縮小する人々についてもそれほど心配していません。しかし、これに精通した答えがある場合はボーナスポイント。それまでは、ページの読み込みごとに1回読み込むことができます。
これを達成するための最良で最もエレガントな方法は何だと思いますか?