Saya tahu bahwa ada metode Asinkron menggunakan Google Analytics tetapi adakah yang serupa dengan adsense? Saya tidak dapat menemukan satu dari pencarian saya saat ini - saya bertanya-tanya apakah ada trik umum yang saya lewatkan?
Saya tahu bahwa ada metode Asinkron menggunakan Google Analytics tetapi adakah yang serupa dengan adsense? Saya tidak dapat menemukan satu dari pencarian saya saat ini - saya bertanya-tanya apakah ada trik umum yang saya lewatkan?
Jawaban:
ini melakukannya:
<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>
lihat item blog ini " Google Ads Async (asynchronous) " pada dasarnya saya telah menemukan cara untuk mendapatkan kode iklan yang benar-benar berjalan async ..
Ya, ada cara - menggunakan iframe. Kami melakukan pemuatan konten iklan yang tidak sinkron di salah satu situs pelanggan kami.
Pertama-tama Anda harus menghubungi Google untuk mendukung iklan mereka di iframe (yang tidak tersedia secara luas saat kami membuat situs itu). Anda kemudian dapat menggunakan JavaScript untuk memicu pemuatan konten iframe AdSense, yang kami lakukan.
Solusinya benar-benar lurus ke depan setelah Anda memiliki dukungan iframe Google.
Sunting: Sepertinya - dari pos yang dirujuk oleh Virtuosi Media - praktik ini mungkin tidak disambut oleh Google ...
Sunting 2:
Ini adalah kode yang kami gunakan di iframe. Cobalah untuk melihat apakah itu berfungsi, mungkin bahkan tanpa meminta dukungan Google secara khusus. Dihapus type="text/javascript" language="JavaScript"
untuk keterbacaan yang lebih baik:
<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>
Kami mengisi semua slot kami melalui id adslot, jadi kami tidak melihat ILM apa pun.
Sejauh ini mereka tidak menawarkan opsi, sejauh yang saya bisa lihat. Opsi terbaik Anda, jika diizinkan oleh TOS Google, akan menggunakan elemen placeholder dan menggantinya secara dinamis dengan JavaScript setelah halaman dimuat. Namun, tampaknya seolah-olah itu bertentangan dengan TOS. Lihat utas ini untuk lebih jelasnya.
Anda dapat menggunakan placeholder, memanggil kode Adsense dan kemudian mengganti placeholder dengan iklan. Saya menggunakan sesuatu seperti ini di situs saya:
if ( ad1 = document.getElementById('ad-top') )
{
ad2 = document.getElementById('banner_tmp468');
ad1.appendChild(ad2);
ad2.style.display = 'block';
}
Google bahkan merekomendasikan melakukan ini ketika mereka mengatakan bahwa Anda harus memiliki posisi iklan paling penting terlebih dahulu dalam kode HTML Anda. Jika Anda ingin mencapainya, Anda harus menggunakan JS atau CSS untuk memindahkan unit iklan yang kurang penting ke bagian (visual) halaman Anda.
Tetapi sejauh yang saya tahu AdSense sudah membuat iklan secara tidak sinkron. Saya jarang melihatnya memblokir pageloading. Tidak yakin tentang ini.
Karena google mengatakan "mari buat web lebih cepat" Saya mengubah kode di atas untuk memuat iklan google hanya ketika mereka terlihat. Kode ini berfungsi "sebagaimana adanya" hanya untuk satu iklan tempat google, tetapi saya pikir Anda dapat dengan mudah memodifikasinya untuk lebih banyak iklan. Berbeda dengan kode lainnya
Dimulai dengan div
iklan yang saya tempatkan nanti.
<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>
Saya telah mengujinya dan bekerja dengan semua browser, saya hanya menggunakan jQuery agar lebih aman bahwa saya menghindari browser yang sulit.
ps, saya telah membuat kode yang sama untuk memuat google plus, dan facebook dan semua item yang memuat dengan alasan paling sering.
Tidak perlu lagi melakukan ini. Show_ads.js Google AdSense sekarang agak tidak sinkron. Anda dapat membaca lebih lanjut tentang detail berdarah di blog resmi:
Web Anda, Setengah Detik Lebih Cepat
Tidak perlu mengubah kode iklan.
document.write function
dan mengembalikannya nanti. Satu-satunya downside adalah bahwa saya bertanya-tanya apakah Google Adsense TOS memungkinkan untuk melakukan hal semacam ini?