始めるために、私はextsrc.jsについての興味深い記事、 実用的で実用的な記事、実用的なコードを見つけました。 ただし、読み込まれたコンテンツに広告ユニットが1つしかない場合は便利です。 その後、問題なく動作します。 このような広告ユニットがあります-2.この方法が機能しないのはなぜですか?
したがって、AdSenseコードは次のように配置されます。
一
<script type="text/javascript">
google_ad_client = "ca-pub-436345435345";
google_ad_slot = "33454355080";
google_ad_width = 728;
google_ad_height = 90;
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
二
<script type="text/javascript">
google_ad_client = "ca-pub-436345435345";
google_ad_slot = "3345434255080";
google_ad_width = 728;
google_ad_height = 90;
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
show_ads.jsスクリプトは、その前の変数(google_ad_client、google_ad_slotなど)をインターセプトして処理し、リセットします。 また、コードは厳密に順番に処理されるため、show_ads.jsには毎回空ではない変数があります。
extsrc.jsを使用すると、ページがレンダリングされた後にshow_ads.jsが起動されます。 AdSenseコード内の変数の名前は同じであり、上から下に割り当てられているため、このスクリプトの最初の実行は最後の変数を処理します。 スクリプトは、最後のブロックのデータに基づいて動作し、すべてをリセットしました。 最後のブロックのバナーのみが表示されますが、最初のブロックの代わりに表示されます。 残りのスクリプトの実行は無意味です;それらのためのデータはありません。
それに、extsrc.jsを使用する場合は、Googleスクリプトのダウンロードコードを変更する必要があります。
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
現在:
<script type="text/javascript" extsrc="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
これはすでにルールに違反しているため、コードを変更することはできません。
しかし、たぶん私は出口を見つけました。 ネットワークを掘り下げてみると、あるプロジェクト-writeCaptureに出会いました 。 その機能の1つは、document.writeが存在するJSコードを実行することです。 さらに、このコードは指定されたブロックで実行できます。 使い方はとても簡単です。
$('#').writeCapture().html('<script src="http://.js"></script>');
<script src = " YourScript.js "> </ script>の代わりに、jsコードを挿入できます。
だから、私はajaxデータを取得します。 このデータには、AdSenseコードブロックがあります。 これがid = "Reklama"であるとしましょう。 受信したデータをページのどこかに配置したいと思います。 私は主にjqueryで作業していますが、あらゆる種類のhtml、appendなど 何でも許容しますが、ブロックにコード<script type = "text / javascript">何か</ script>が含まれている場合は、html、appendなどを使用して配置します。 このコードは後でブロックに表示されません。 なぜこれが起こっているのかわかりませんが、誰かがコメントで説明するでしょうか? はい、見た場合、このコードはすぐに機能し、document.write操作が不可能であることに関するエラーが発生します。 結果のコードにコンストラクトを挿入することで解決策を見つけました
document.getElementById('X').innerHTML=" ajax"
このため、このデザインでは、スクリプトは<script type = "text / javascript">何か</ script>とともに変更なしで目的の場所に転送されますが、スクリプトの本文は機能しません。
最後に、最も興味深いのは次のことです。
$('#Reklama').writeCapture().html($('#Reklama').html());
バナーが表示されました。 コードを見ると、すべてが正常に機能していますが、AdSenseコード自体のバナーの前に十分な行がありません。 もちろん、ここには犯罪者はいませんが、芸術のためにいくつかの変更を行います。 htmlの代わりにappendの使用を禁止する人はいません。
$('#Reklama').writeCapture().append($('#Reklama').html());
やった! バナーが表示されます! htmlコードを見てください。 AdSenseコードは公開中です。
しかし、これがすべてではないことが判明しました。 Googleがページのグローバル配列に入力するバナーインプレッションの数、つまり 一種のカウンター。 カウンターが3を超えると、バナーの表示が停止します。 Google、彼のコードの所有者、それは不可能なので、私たちはそれに触れませんでした。 そして、私たちはコードとブラウザの所有者です。 バナーを表示する前に、これを行います。
delete __google_ad_urls;
delete google_iframe_oncopy;
delete google_jobrunner;
delete google_jobrunner;
delete google_persistent_state;
delete google_persistent_state_async;
delete google_num_ad_slots;
delete google_num_0ad_slots;
delete google_prev_ad_slotnames_by_region;
delete google_unique_id;
show_ads.jsコードを完全に理解していなかったという理由だけで、非常に多くの配列を削除しました。 後続のバナー表示で、これらのアレイは正常に復元されます。
すべての変数を調べて、「google」という文字列が見つかった変数を削除できますが、この方法はページに広告があり、他のGoogleストレイ広告がない場合にのみ有効です。
以下に例を示します。
for(ウィンドウ内のvarキー)
{if(key.toLowerCase()。indexOf( 'google')>-1 && key!= 'google_ad_client' && key!= 'google_ad_slot' && key!= 'google_ad_width' && key!= 'google_ad_height')
{window [key] = undefined;}}
ここでは、もちろん、すべてのオブジェクトが無差別にソートされますが、バナー以外にGoogleがページ上にない場合は、それ自体に非常に適しています。 削除ウィンドウ[キー]を使用しなかったことに注意してください。つまり、バージョン9よりも低いため、食べたくありません。
幸運と建設的な批判を私に。