Wiem, że istnieje asynchroniczna metoda korzystania z Google Analytics, ale czy istnieje coś podobnego do programu AdSense? Nie mogę znaleźć jednego z moich bieżących wyszukiwań - zastanawiałem się, czy brakuje mi wspólnej sztuczki?
Wiem, że istnieje asynchroniczna metoda korzystania z Google Analytics, ale czy istnieje coś podobnego do programu AdSense? Nie mogę znaleźć jednego z moich bieżących wyszukiwań - zastanawiałem się, czy brakuje mi wspólnej sztuczki?
Odpowiedzi:
to robi:
<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>
zobacz ten element blogu „ Google Ads Async (asynchroniczny) ” w zasadzie znalazłem sposób, aby kod reklamy działał naprawdę asynchronicznie.
Tak, istnieje sposób - użycie iframe. Wykonujemy asynchroniczne ładowanie treści reklam na jednej z witryn naszych klientów.
Najpierw musisz skontaktować się z Google, aby uzyskać wsparcie dla ich reklam w elementach iframe (które nie były powszechnie dostępne, gdy budowaliśmy tę witrynę). Następnie możesz użyć JavaScript, aby uruchomić ładowanie treści iframe AdSense, co właśnie robimy.
Rozwiązanie jest naprawdę proste, gdy masz obsługę iframe firmy Google.
Edycja: Wygląda na to - z postów wymienionych przez Virtuosi Media - ta praktyka może nie być mile widziana przez Google ...
Edycja 2:
To jest kod, którego używamy w ramce iframe. Wypróbuj, aby sprawdzić, czy to działa, może nawet bez wyraźnego pytania Google o wsparcie. Usunięto type="text/javascript" language="JavaScript"
dla lepszej czytelności:
<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>
Wszystkie boksy wypełniamy za pomocą identyfikatorów reklam, więc nie widzimy żadnych umów PSA.
O ile mi wiadomo, obecnie nie oferują tej opcji. Najlepszą opcją, jeśli zezwala na to Google TOS, byłoby użycie elementu zastępczego i dynamiczne zastąpienie go JavaScript po załadowaniu strony. Wygląda jednak na to, że może być sprzeczne z TOS. Zobacz ten wątek, aby uzyskać więcej informacji.
Możesz użyć symbolu zastępczego, wywołać kod AdSense, a następnie zamienić symbol zastępczy na reklamę. Używam czegoś takiego na mojej stronie:
if ( ad1 = document.getElementById('ad-top') )
{
ad2 = document.getElementById('banner_tmp468');
ad1.appendChild(ad2);
ad2.style.display = 'block';
}
Google zaleca nawet to zrobić, gdy mówią, że w kodzie HTML powinna znajdować się najważniejsza pozycja reklamy. Jeśli chcesz to osiągnąć, musisz użyć JS lub CSS, aby przenieść mniej ważne jednostki reklamowe na (wizualną) górę strony.
Ale o ile wiem, AdSense już wyświetla reklamy asynchronicznie. Bardzo rzadko widziałem, jak blokuje ładowanie stron. Nie jestem tego jednak pewien.
Ponieważ Google mówi „pozwala nam przyspieszyć Internet”, zmieniam powyższy kod, aby ładować reklamy Google tylko wtedy, gdy są widoczne. Kod działa „tak jak jest” tylko w przypadku jednej reklamy miejsca w Google, ale myślę, że można łatwo go zmodyfikować, aby wyświetlać więcej reklam. Inne z innym kodem są
Począwszy od tego div
, że umieszczam reklamy później.
<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>
Testowałem to i pracuję ze wszystkimi przeglądarkami, po prostu używam jQuery, aby być bardziej bezpiecznym niż to, że unikam trudnych przeglądarek.
ps, zrobiłem podobny kod, aby załadować google plus, facebook i wszystkie te elementy, które ładują się bez powodu przez większość czasu.
Nie ma takiej potrzeby. Show_ads.js Google AdSense jest teraz nieco asynchroniczny. Możesz przeczytać więcej o krwawych szczegółach na oficjalnym blogu:
Twoja sieć, pół sekundy wcześniej
Nie ma potrzeby zmiany kodu reklamy.
document.write function
i przywraca go później. Jedynym minusem jest to, że zastanawiam się, czy Google Adsense TOS pozwala robić takie rzeczy?