Vím, že existuje asynchronní metoda používání Google Analytics , ale existuje něco podobného pro AdSense? Nemohu najít jeden z mých současných vyhledávání - přemýšlel jsem, jestli existuje nějaký běžný trik, který mi chybí?
to dělá:
<script type="text/javascript"><!--
// dynamically Load Ads out-of-band
setTimeout((function ()
{
// placeholder for ads
var eleAds = document.createElement("ads");
// dynamic script element
var eleScript = document.createElement("script");
// remember the implementation of document.write function
w = document.write;
// override and replace with our version
document.write = (function(params)
{
// replace our placeholder with real ads
eleAds.innerHTML = params;
// put the old implementation back in place
// Aristos, add this check because called more than ones
// and ends, with this symbol.
if(params.indexOf("</ins>") != -1)
document.write=w;
});
// setup the ads script element
eleScript.setAttribute("type", "text/javascript");
eleScript.setAttribute("src", "http://pagead2.googlesyndication.com/pagead/show_ads.js");
// add the two elements, causing the ads script to run
document.body.appendChild(eleAds);
document.body.appendChild(eleScript);
}), 1);
//-->
</script>
podívejte se na tuto položku blogu „ Google Ads Async (asynchronous) " v podstatě jsem našel způsob, jak získat reklamní kód, aby mohl běžet skutečně asynchronně.
Ano, existuje způsob - použití prvků iframe. Na jednom z našich zákazníků provádíme asynchronní načítání reklamního obsahu.
Nejprve je třeba kontaktovat společnost Google, aby podporovala jejich reklamy v prvcích iframe (což nebylo při vytváření tohoto webu široce dostupné). Poté můžete pomocí JavaScriptu spustit načítání obsahu AdSense iframe, což děláme.
Jakmile máte podporu prvku iframe od společnosti Google, řešení je opravdu přímé.
pravit: Vypadá to, že - z příspěvků, na které odkazuje Virtuosi Media - nemusí společnost Google tento postup uvítat ...
pravit 2: Toto je kód, který používáme v prvku iframe. Vyzkoušejte, zda funguje, možná i bez výslovného vyžádání podpory společnosti Google. Odebráno type="text/javascript" language="JavaScript"
pro lepší čitelnost:
<head runat="server">
<script src="http://partner.googleadservices.com/gampad/google_service.js">
</script>
<script>
GS_googleAddAdSenseService("ca-pub-YOURKEY");
GS_googleEnableAllServices();
</script>
<!-- For this method, it is not necessary to define the slots in advance
and we do not use the FetchAds function -->
<script>
GA_googleUseIframeRendering(true); //<%-- This indicates iframe rendering for all slots --%>
</script>
</head>
<body>
<form id="formAd" runat="server">
<div>
<script>
GA_googleFillSlotWithSize("ca-pub-YOURKEY", "AdSlotId",
iframeWidth, iframeHeight);
</script>
</div>
</form>
</body>
Všechny naše automaty vyplňujeme pomocí ID reklam, takže nevidíme žádné PSA.
Můžete použít zástupný symbol, zavolat na kód AdSense a poté přepnout zástupný symbol pomocí reklamy. Na svém webu používám něco podobného:
if ( ad1 = document.getElementById('ad-top') )
{
ad2 = document.getElementById('banner_tmp468');
ad1.appendChild(ad2);
ad2.style.display = 'block';
}
Google to dokonce doporučuje, když tvrdí, že byste měli mít v kódu HTML nejprve nejdůležitější pozici reklamy. Pokud chcete dosáhnout toho, že budete muset přesunout méně důležité reklamní jednotky do (vizuální) horní části stránky pomocí JS nebo CSS.
Pokud však vím, AdSense již reklamy asynchronně vykresluje. Jen velmi zřídka jsem viděl blokování načítání stránek. Nejste si tím jistí.
Pokud to vidím, v současné době tuto možnost nenabízejí. Vaše nejlepší volba, pokud to bylo povoleno službou Google TOS, by bylo použití zástupného prvku a po načtení stránky jej dynamicky nahradit skriptem JavaScript. Zdá se však, že by to mohlo být proti TOS. Další podrobnosti viz toto vlákno .
Není třeba to dělat. Show_ads.js Google AdSense je nyní poněkud asynchronní. Další informace o krvavých podrobnostech si můžete přečíst na oficiálním blogu:
Není třeba měnit reklamní kód.
Protože google říká: „umožňuje zrychlit web“, změním výše uvedený kód, aby se reklamy Google načítaly, pouze pokud jsou viditelné. Kód funguje „tak, jak je“, pouze pro jednu reklamu na google místě, ale myslím si, že ji můžete snadno upravit pro více reklam. Liší se od ostatních kódů
Počínaje div
, na které umístím reklamy později.
<div id="adSpot" ></div>
<script type="text/javascript">
// load the script with cache
function getScriptCcd(url, callback)
{
jQuery.ajax({
type: "GET",
url: url,
success: callback,
dataType: "script",
cache: true
});
};
// to unbind the scroll I keep the total binds of scroll
// in this example I have only one.
var cPosaScrollExo = 0;
// bind the scrool to monitor if ads are visible
function addThisScroll(RunThisFunction)
{
jQuery(window).scroll(RunThisFunction);
cPosaScrollExo++;
}
// unbind all scroll if all they not needed any more
function unBindScroll()
{
cPosaScrollExo--;
if(cPosaScrollExo <= 0)
{
cPosaScrollExo = 0;
jQuery(window).unbind('scroll');
}
}
// here I check if the element is visible to the user with a 100pixel advanced.
function isScrolledOnMatia(pioSimio)
{
var SimioPouTheloNaFenete = (jQuery(pioSimio).offset().top - 100 );
var scrollPosition = jQuery(window).height() + jQuery(window).scrollTop();
return (scrollPosition >= SimioPouTheloNaFenete );
}
// the ads informations
google_ad_client = "pub-XXXXXXXXXXXXXXX";
google_ad_slot = "XXXXX";
google_ad_width = 468;
google_ad_height = 60;
var GoogleIsVisible = false;
// we call this function on every window scroll
function CheckAdsVisibility()
{
if(!GoogleIsVisible)
{
if(isScrolledOnMatia("#adSpot"))
{
unBindScroll();
GoogleIsVisible = true;
// finally I go to show the ads
LoadAdsLater();
}
}
}
// here is a modification of the function that load the ads
function LoadAdsLater()
{
try
{
// Aristos: Nice trick here
// remember the implementation of document.write function
w = document.write;
// override and replace with our version
document.write = (function(params)
{
jQuery("#adSpot").append(params);
// put the old implementation back in place when
// all writes are finish
if(params.indexOf("</ins>") != -1)
document.write=w;
});
// loading script
getScriptCcd("http://pagead2.googlesyndication.com/pagead/show_ads.js");
}
catch(e)
{
// check for errors on debug
}
}
// and here we setup the hole thin
jQuery(document).ready(function()
{
// check if all ready is visible !
CheckAdsVisibility();
// bind the scroll
addThisScroll(CheckAdsVisibility);
});
</script>
Testuji to a pracuji se všemi prohlížeči, používám jQuery, abych byl bezpečnější, abych se vyhnul obtížným prohlížečům.
ps, udělal jsem podobný kód pro načtení google plus a facebooku a všech těch položek, které se načítají bez důvodu většinu času.