Разместить рекламу - используйте appendChild, чтобы переместить IFRAME с текстовыми ссылками - PullRequest
1 голос
/ 12 мая 2010

Я изменил код так, чтобы в основном загрузить добавление внизу страницы в скрытом элементе div и добавил обработчик события onload, который называется document.getElementById (xxx) .appendChild (), чтобы взять скрытое объявление и переместить его в правильное место на моей странице. Это работает ОТЛИЧНО ... однако, когда объявление представляет собой текстовое объявление, ПОСЛЕ того, как я переместил объявление, в отображаемом фрейме ничего нет. Я провел тесты, чтобы увидеть, как он выглядит, прежде чем переместить его, и, конечно же, текстовые ссылки загружаются в IFRAME, но во-вторых, я выполняю вызов 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, чтобы просто указать на какой-либо источник. Похоже, когда я делаю appendchild, если для iframe после копирования не установлено «src», iframe в новом месте ничего не содержит ... угадайте, что он перезагружается на src? Любой способ обойти это ??

Ответы [ 2 ]

1 голос
/ 28 июня 2010

Это должно сработать:

<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>
0 голосов
/ 13 июля 2010

Попробуй это. Если 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';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...