33

これを見つけるのがどれほど難しいか信じられませんが、Google 開発者向けドキュメントでさえ見つけることができません。動的にできる必要がありますが、JavaScriptでアドセンスを挿入する必要があります。私は StackOverflow も調べましたが、他の何人かがこれを尋ねましたが、応答がありませんでした。うまくいけば、これがより良い説明になり、いくつかの回答が得られるでしょう。

基本的に、ユーザーは私のスクリプトを挿入し、それを呼び出すことができますmy.js(現時点では具体的には言えません)my.jsが読み込まれ、my.js一部の埋め込みメディアがページに表示され、生成された HTML を次のように追加する必要があります。

<script type="text/javascript"><!--
google_ad_client = "ca-pub-xxx";
/* my.js example Ad */
google_ad_slot = "yyy";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

特定の<div>(またはその他の) 要素内。何か案は?

PS jQuery のようなライブラリはありません。JavaScript を使用しない限り、ページに HTML を挿入することはできず、特定の<div>名前に挿入する必要があります (それが役立つ場合は、JS ライブラリにSizzleを使用しています)。

4

9 に答える 9

24

Google が AdSense スクリプト内で使用するため、他の回答で提案された AdSense スクリプトを非同期的に読み込むために使用される単純な手法は機能しませんdocument.write()document.write() ページの作成中にのみ機能し、非同期に読み込まれたスクリプトが実行されるまでに、ページの作成は既に完了しています。

これを機能させるdocument.write()には、AdSense スクリプトが呼び出したときに DOM を自分で操作できるように上書きする必要があります。次に例を示します。

<script>
window.google_ad_client = "123456789";
window.google_ad_slot = "123456789";
window.google_ad_width = 200;
window.google_ad_height = 200;

// container is where you want the ad to be inserted
var container = document.getElementById('ad_container');
var w = document.write;
document.write = function (content) {
    container.innerHTML = content;
    document.write = w;
};

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://pagead2.googlesyndication.com/pagead/show_ads.js';
document.body.appendChild(script);
</script>

この例では、最初にネイティブdocument.write()関数をローカル変数にキャッシュします。次に上書きdocument.write()し、その内部に、innerHTMLGoogle が送信する HTML コンテンツを挿入するために使用しますdocument.write()。それが完了すると、ネイティブdocument.write()機能が復元されます。

この手法は、http: //blog.figmentengine.com/2011/08/google-ads-async-asynchronous.htmlから借用したものです。

于 2013-04-05T18:53:26.020 に答える
13

私のページにはすでにアドセンスがありますが、ブログ記事のプレースホルダーにも新しい広告を挿入しています。広告を挿入したい場合は、「adsense-inject」クラスの div を追加します。ドキュメントの準備ができたら、このスクリプトを実行します。他の広告用に adsense スクリプトが既に読み込まれていることがわかります。

    $(document).ready(function()
    {
        $(".adsense-inject").each(function () {
            $(this).append('<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3978524526870979" data-ad-slot="6927511035" data-ad-format="auto"></ins>');
            (adsbygoogle = window.adsbygoogle || []).push({});
        }); 
    });
于 2016-03-29T05:27:20.130 に答える
4

これは更新された実装です。これは、一般的な外部 JavaScript インクルードを使用して広告を管理する必要がない場合に役立ちます。私の場合、静的な html ファイルがたくさんあり、うまく機能します。また、AdSense スクリプトを一元的に管理できます。

var externalScript   = document.createElement("script");
externalScript.type  = "text/javascript";
externalScript.setAttribute('async','async');
externalScript.src = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
document.getElementsByTagName('body')[0].appendChild(externalScript);

var ins   = document.createElement("ins");
ins.setAttribute('class','adsbygoogle');
ins.setAttribute('style','display:block;');/*add other styles if required*/
ins.setAttribute('data-ad-client','ca-pub-YOUR-CLIENTID');
ins.setAttribute('data-ad-slot','YOUR-SLOTID');
ins.setAttribute('data-ad-format','auto');
document.getElementsByTagName('body')[0].appendChild(ins);

var inlineScript   = document.createElement("script");
inlineScript.type  = "text/javascript";
inlineScript.text  = '(adsbygoogle = window.adsbygoogle || []).push({});'  
document.getElementsByTagName('body')[0].appendChild(inlineScript); 

使用例:

<script type="text/javascript" src="/adinclude.js"></script>
于 2018-01-18T11:47:44.730 に答える
3

変数 (google_ad_client など) を常に先頭に置き、次のように他の部分を動的に追加するのはどうですか:

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://pagead2.googlesyndication.com/pagead/show_ads.js';
myDIV.appendChild(script); 
于 2012-02-17T13:56:22.610 に答える
1

このページによると、スクリプト タグを生成し、その場で src フィールドにデータを入力することが可能です。これは @noiv が提案するものです (ここでの私のバージョンは自己完結型である必要があります。外部の html または js ライブラリは必要ありません)。これを試してみましたか?そんなに難しくないような…

function justAddAdds(target_id, client, slot, width, height) {
  // ugly global vars :-P
  google_ad_client = client;
  google_ad_slot = slot;
  google_ad_width = width;
  google_ad_height = height;
  // inject script, bypassing same-source
  var target = document.getElementById(target_id);
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = 'http://pagead2.googlesyndication.com/pagead/show_ads.js';
  target.appendChild(script);
}
于 2012-08-01T19:06:09.600 に答える