お金をふやそう

自由で楽しい人生を送るために、お金、時間、健康についてちょっとだけ真剣に考えるブログ

記事中のアドセンス挿入でアクティブビュー視認可能率が低下する?(続)

スポンサーリンク

スポンサーリンク

f:id:akanesky:20151220024908j:plain

前回、一度表示したアドセンスをJavascriptで移動すると、アクティブビュー視認可能率が正確に計測されず、低下してしまうところまでお話しました。
本記事では、その回避方法を書きたいと思います。

前の記事を読んでいない方はぜひ読んでから、本記事を読んでくださいね。

okanewofuyaso.hateblo.jp

DOMオブジェクトを生成してから、所定の位置に挿入することで、アクティブビュー視認可能率に影響を与えずに、アドセンス広告を表示させることができます。

この方法は、IMUZA.comさんのページを参考にさせていただきました。
IMUZA.comさんのページに、Javascriptコードを公開してくださっているので、それをコピーさせていただきます。

www.imuza.com

アドセンスのHTMLコードは概ね次のような感じだと思います。

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-XXX"
data-ad-slot="XXX"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({}); *1
</script>

複数のアドセンス広告を貼っている場合は、この

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

の部分は、一ヵ所にまとめることができますので、まとめる場合は削除してもよいです。
何度も同じコードを読み込むのは無駄ですので、

<head></head>

に1回だけ書くとよいでしょう。

はてなブログの場合は、「設定」の「詳細設定」に「headに要素を追加」という項目があるので、そこにadsbygoogle.jsのロードするコードを書くと"<head>"に書き込まれます。

DOMオブジェクト生成のためのコードの該当箇所は、

var adsScr = document.createElement('script');
 adsScr.async = true;
 adsScr.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';

elmDiv.appendChild(adsScr);

ですので、これらを削除します。

ということで、最終的には、

var elmDiv = document.createElement('div');
var spsLink = document.createElement('div');
 spsLink.innerHTML = 'スポンサーリンク';
elmDiv.appendChild(spsLink);

var adsIns = document.createElement('ins');
 adsIns.className = 'adsbygoogle';
 adsIns.style.display = 'block';
/* XXX は、自分のアドセンスのコードに含まれている番号で置き換えます */
 adsIns.dataset.adClient = 'ca-pub-XXX';
 adsIns.dataset.adSlot= 'XXX';
 adsIns.dataset.adFormat = 'auto';

var adsGgl = document.createElement('script');

 adsGgl.text = '(adsbygoogle = window.adsbygoogle || []).push({});';
elmDiv.appendChild(adsIns);
elmDiv.appendChild(adsGgl);

はてなブログで、記事中にアドセンス広告を挿入したい場合は、例えば、次のようなコードになります。

var $target = $('.entry-content h3');
$target.eq(1).before(elmDiv);

上記の場合、はてなブログの記事内の2番目のレベル1見出し(HTMLではh3)の前にアドセンス広告を表示できます。
(0から数えます)
"1"を変更することで、目的の見出しの前に表示させることができます。
もちろん、h3を変えることで、他のタグを指定できます。
前ではなく、後ろがよければ".before"を".after"にすればよいです。

見出しの数によって、挿入箇所を変えたければ、

var $target = $('.entry-content h3');
if ($target.length == 1) {
    $target.eq(0).before(elmDiv);
}
else {
    $target.eq(2).before(elmDiv);
}

のように、条件分岐してしまえばよいです。

皆さん、いろいろなコードを公開してくださって、大変助かってします。
感謝です。