1 votes

Chargement de la publication des annonces - en utilisant appendChild pour déplacer un IFRAME avec des annonces de liens texte

J'ai modifié le code pour charger essentiellement une publicité en bas de la page dans une div cachée et j'ai attaché un gestionnaire d'événements onload qui appelait document.getElementById(xxx).appendChild() pour prendre la publicité cachée et la déplacer à l'emplacement correct dans ma page. Cela fonctionne TRÈS BIEN.. cependant, quand la publicité est une publicité texte, une fois que j'ai déplacé la publicité, il n'y a rien dans l'Iframe rendu. J'ai fait des tests pour voir à quoi cela ressemblait avant de la déplacer et en effet, les liens texte se chargent dans l'Iframe, mais dès que j'appelle appendChild pour déplacer la div qui contient la publicité, je semble perdre le contenu de l'Iframe.

Des idées sur ce qui se passe

    GA_googleFillSlot("MonNomSlotAD");

window.onload = function() {
    // bannière de leader
    document.getElementById('adplaceholder').appendChild(document.getElementById('myAd'));
    document.getElementById('myAd').style.display = '';

MISE À JOUR: Je pense que le problème ici est que pour les publicités texte, Google écrit directement dans l'Iframe en insérant les liens texte pertinents, tandis que pour d'autres publicités, il utilise l'Iframe pour simplement pointer vers une certaine src. Il semble que lorsque je fais appendchild, s'il n'y a pas de "src" défini pour l'Iframe après la copie, l'Iframe à nouvel emplacement ne contient rien... je suppose qu'il fait un rechargement sur la src ? Y a-t-il un moyen d'éviter cela ??

1voto

galambalazs Points 24393

Cela devrait faire l'affaire :

placeholder

    ...

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 );
};

0voto

Essayez ceci. Si Google met en place un IFrame, mettez le contenu de l'IFrame, sinon procédez comme d'habitude :

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';
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X