Nos perezoso-carga de código de OpenX. En lugar de poner la llamada de una sola página en la parte superior de la página, la colocamos en la parte inferior. Después de que la página se haya cargado, la llamada recibirá los datos del banner y un código personalizado agregará los banners adecuados en las zonas correctas.
El siguiente código requiere un DOM correcto. Si tiene jQuery, DOMAssistant, FlowJS, etc., el DOM debe ser arreglado por usted. Este código funcionará con pancartas normales con imágenes, flash o contenido HTML. Es posible que no funcione en algunos casos, como cuando se utilizan banners de proveedores externos (anuncios, etc.). Para eso es posible que tengas que piratear el código un poco.
¿Cómo usarlo?
- añadir su código SinglePageCall hacia el final de su código HTML
- añadir este código en el código SPC.
- después de medio segundo más o menos, su código OpenX debe estar listo, y el código siguiente colocará los banners dentro de los DIV especificados.
- Oh, sí, necesita agregar a su código HTML algunos DIV como marcadores de lugar para sus pancartas. De forma predeterminada, tengo estos banners establecidos con la clase CSS "oculta", que oculta por completo los DIV (con visibilidad, visualización y altura). Luego, después de que el banner en un DIV dado se cargue exitosamente, eliminamos la clase oculta y el DIV (y el banner dentro) se vuelven visibles.
¡Corra bajo su propio riesgo! :) Espero que ayuda
(function(){
if (!document || !document.getElementById || !document.addEventListener || !document.removeClass) {
return; // No proper DOM; give up.
}
var openx_timeout = 1, // limit the time we wait for openx
oZones = new Object(), // list of [div_id] => zoneID
displayBannerAds; // function.
// oZones.<divID> = <zoneID>
// eg: oZones.banner_below_job2 = 100;
// (generated on the server side with PHP)
oZones.banner_top = 23;
oZones.banner_bottom = 34;
displayBannerAds = function(){
if(typeof(OA_output)!='undefined' && OA_output.constructor == Array){
// OpenX SinglePageCall ready!
if (OA_output.length>0) {
for (var zone_div_id in oZones){
zoneid = oZones[zone_div_id];
if(typeof(OA_output[zoneid])!='undefined' && OA_output[zoneid]!='') {
var flashCode,
oDIV = document.getElementById(zone_div_id);
if (oDIV) {
// if it's a flash banner..
if(OA_output[zoneid].indexOf("ox_swf.write")!=-1)
{
// extract javascript code
var pre_code_wrap = "<script type='text/javascript'><!--// <![CDATA[",
post_code_wrap = "// ]]> -->";
flashCode = OA_output[zoneid].substr(OA_output[zoneid].indexOf(pre_code_wrap)+pre_code_wrap.length);
flashCode = flashCode.substr(0, flashCode.indexOf(post_code_wrap));
// replace destination for the SWFObject
flashCode = flashCode.replace(/ox\_swf\.write\(\'(.*)'\)/, "ox_swf.write('"+ oDIV.id +"')");
// insert SWFObject
if(flashCode.indexOf("ox_swf.write")!=-1){
eval(flashCode);
oDIV.removeClass('hidden');
}// else: the code was not as expected; don't show it
}else{
// normal image banner; just set the contents of the DIV
oDIV.innerHTML = OA_output[zoneid];
oDIV.removeClass('hidden');
}
}
}
} // end of loop
}//else: no banners on this page
}else{
// not ready, let's wait a bit
if (openx_timeout>80) {
return; // we waited too long; abort
};
setTimeout(displayBannerAds, 10*openx_timeout);
openx_timeout+=4;
}
};
displayBannerAds();
})();
ver http://stackoverflow.com/questions/3106782/openx-aysnc-tags –