2011-11-28 18 views
12

Estoy usando algunas de las nuevas funciones en Google DFP y no puedo obtener un solo complemento para actualizar por sí mismo. Puedo actualizar todos los anuncios en la página, pero no puedo obtener solo uno para actualizar por sí mismo.google dfp pubads(). Refresh() no funciona como se esperaba

he estado tratando el siguiente código para obtener un complemento para refrescar sin suerte:

var slot1 = googletag.display('/6900315/myad2', [300, 250], 'div-2'); 
     googletag.pubads().refresh([slot1]); 

Cualquier ayuda se agradece!

fuente completo:

<script type='text/javascript'> 
var googletag = googletag || {}; 
googletag.cmd = googletag.cmd || []; 
(function() { 
    var gads = document.createElement('script'); 
    gads.async = true; 
    gads.type = 'text/javascript'; 
    var useSSL = 'https:' == document.location.protocol; 
    gads.src = (useSSL ? 'https:' : 'http:') + 
'//www.googletagservices.com/tag/js/gpt.js'; 
    var node = document.getElementsByTagName('script')[0]; 
    node.parentNode.insertBefore(gads, node); 
})(); 
</script> 


script type='text/javascript'> 
googletag.cmd.push(function() { 
    googletag.pubads().enableAsyncRendering(); 
    googletag.defineSlot("/69003153/myad1", [728, 90], "div-1").addService   (googletag.pubads()); 
    googletag.defineSlot("/69003153/myad2", [300, 250], "div-2").addService (googletag.pubads()); 
    googletag.enableServices(); 
}); 
</script> 
<script type='text/javascript'> 
function changeAd() { 
    googletag.cmd.push(function() { 
     var slot1 = googletag.display('/6900315/myad2', [300, 250], 'div-2'); 
     googletag.pubads().refresh([slot1]); 
     //googletag.pubads().refresh(); 


    }); 
} 
</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 


    <div id='div-1' style='width:728px; height:90px;'> 
<script type='text/javascript'> 
    googletag.cmd.push(function() { googletag.display('div-1'); }); 
</script> 
</div> 


<!-- BoxAdd_Details --> 
<div id='div-2' style='width:300px; height:250px;'> 
    <script type='text/javascript'> 
     googletag.cmd.push(function() { googletag.display('div-2); }); 
</script> 
</div> 

<input type="button" name="test" title="test" onclick="javascript:window.changeAd();"  value="Reload Ad" /> 

Respuesta

14

También estoy teniendo el mismo problema. Aún no tengo mis anuncios para actualizar, pero le sugiero que no necesite volver a declarar su espacio publicitario en changeAd().

En lugar de:

googletag.cmd.push(function() { 
    googletag.pubads().enableAsyncRendering(); 
    googletag.defineSlot("/69003153/myad1", [728, 90], "div-1").addService   (googletag.pubads()); 
    googletag.defineSlot("/69003153/myad2", [300, 250], "div-2").addService (googletag.pubads()); 
    googletag.enableServices(); 
}); 

Probar:

googletag.cmd.push(function() { 
    googletag.pubads().enableAsyncRendering(); 
    slot1 = googletag.defineSlot("/69003153/myad1", [728, 90], "div-1").addService   (googletag.pubads()); 
    slot2 = googletag.defineSlot("/69003153/myad2", [300, 250], "div-2").addService (googletag.pubads()); 
    googletag.enableServices(); 
}); 

Declarar sin 'var' precede hace que las ranuras de alcance mundial. En su función de changeAd(), sólo tiene que llamar

googletag.pubads().refresh([slot1]); 

Ni siquiera estoy seguro de si se han de fijar que en el interior googletag.cmd.push()

Cuando ejecuto esta manera, mis anuncios aún dont refrescar, pero el funcionamiento console.log (slot1) muestra que el espacio publicitario está vivo y coleando ...

¿Alguien más puede ayudarlo?

+0

gracias que funcionó una delicia! Un complemento se actualiza ahora utilizando el código anterior utilizando el alcance global para el slot1 – sooty

+0

Funciona. Asegúrese de incluir googletag.pubads(). EnableAsyncRendering(); sobre defineSlot() como no lo hice y me tomó un tiempo para lanzar por qué el código no estaba funcionando –

+0

googletag.pubads(). refresh(); funciona bien sin discusión adentro :) – Kostadin

Cuestiones relacionadas