1

基本的に非表示のdivにページの下部をロードするようにコードを変更し、document.getElementById(xxx).appendChild()を呼び出すonloadイベントハンドラーをアタッチして、非表示の広告を取得し、の適切な場所に移動しました。私のページ。これはうまく機能します。ただし、広告がテキスト広告の場合、広告を移動した後、レンダリングされたIframeには何もありません。移動する前にテストを行い、テキストリンクがIFRAMEに十分に読み込まれることを確認しましたが、2番目にappendChild呼び出しを実行して、広告を含むdivを移動するとIframeのコンテンツが失われるようです。

何が起こっているのか

<div id="myad" style="display: none;">
    GA_googleFillSlot("MyADSlotName");
</div>

<script>
window.onload = function() {
    // leader board
    document.getElementById('adplaceholder').appendChild(document.getElementById('myAd'));
    document.getElementById('myAd').style.display = '';
</script>

更新:ここでの問題は、テキスト広告ではgoogleがiframeに直接書き込み、他の広告では関連するテキストリンクを挿入し、iframeを使用してsrcを指すことだと思います。アペンドチャイルドを実行するときに、コピーが実行された後にiframeに「src」が設定されていない場合、新しい場所のiframeには何も含まれていないようです... srcでリロードが行われると思いますか?これを回避する方法はありますか?

4

2 に答える 2

1

これでうまくいくはずです:

<div id="adsense_empty">placeholder</div>
<div id="adsense_content" style="display: none;">
    <script src="adsense">...</script>
</div>

<script>
function replace( oldel, newel, show ) {
  if ( typeof newel == "string" ) 
    newel = document.getElementById( newel );
  if ( typeof oldel == "string" ) 
    oldel = document.getElementById( oldel );
  if ( newel && oldel )
    oldel.parentNode.replaceChild( newel, oldel );
  if ( show ) 
    newel.style.display = "";
}

window.onload = function() {
    replace( "adsense_empty",  "adsense_content",  true );
    replace( "adsense_empty2", "adsense_content2", true );
    replace( "adsense_empty3", "adsense_content3", true );
};
</script>
于 2010-06-28T19:43:50.020 に答える
0

これを試して。GoogleがIFrameを配置する場合は、IFrameのコンテンツを配置します。それ以外の場合は、通常どおり続行します。

if (document.getElementById('banner_leaderboard'))  
{   
    if (document.getElementById('google_ads_iframe_XXXXX_AllSite_Leaderboard_728x90'))         
    {
        var el1 = document.getElementById('banner_leaderboard');
        el1.innerHTML = document.getElementById('google_ads_iframe_XXXXX_AllSite_Leaderboard_728x90').contentWindow.document.body.innerHTML;
    } 
    else 
    {
        document.getElementById('banner_leaderboard').appendChild(document.getElementById('banner_leaderboard_hidden'));
        document.getElementById('banner_leaderboard_hidden').style.display = 'block';
    }
}
于 2010-07-13T12:27:55.500 に答える