1 votes

Annonces post chargement - utilisation de appendChild pour déplacer un IFRAME avec des annonces sous forme de lien texte

J'ai modifié le code pour charger une annonce en bas de la page dans un div caché et j'ai attaché un gestionnaire d'événement onload qui appelle document.getElementById(xxx).appendChild() pour prendre l'annonce cachée et la déplacer au bon endroit dans ma page. Cela fonctionne très bien, mais lorsque la publicité est une publicité textuelle, APRÈS avoir déplacé la publicité, il n'y a rien dans l'Iframe rendu. J'ai fait des tests pour voir à quoi cela ressemble avant de la déplacer et, bien sûr, les liens texte se chargent dans l'IFRAME, mais dès que je fais l'appel appendChild pour déplacer le div qui contient la publicité, il semble que je perde le contenu de l'Iframe.

Une idée de ce qui se passe ?

<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>

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

1voto

galambalazs Points 24393

Cela devrait faire l'affaire :

<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>

0voto

Essaie ça. Si Google met une 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