ฉันรู้ว่ามีวิธีการแบบอะซิงโครนัสในการใช้ Google Analyticsแต่มีบางอย่างที่คล้ายกับ Adsense หรือไม่ ฉันไม่พบจากการค้นหาปัจจุบันของฉัน - ฉันสงสัยว่ามีเคล็ดลับทั่วไปที่ฉันหายไปหรือไม่?
ฉันรู้ว่ามีวิธีการแบบอะซิงโครนัสในการใช้ Google Analyticsแต่มีบางอย่างที่คล้ายกับ Adsense หรือไม่ ฉันไม่พบจากการค้นหาปัจจุบันของฉัน - ฉันสงสัยว่ามีเคล็ดลับทั่วไปที่ฉันหายไปหรือไม่?
คำตอบ:
นี่มัน:
<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>
ดูรายการบล็อกนี้ " Google Ads Async (แบบอะซิงโครนัส) " โดยทั่วไปฉันพบวิธีที่จะทำให้โค้ดโฆษณาทำงานแบบอะซิงก์อย่างแท้จริง ..
ใช่มีวิธีใช้ iframes เราทำการโหลดเนื้อหาโฆษณาแบบอะซิงโครนัสบนเว็บไซต์ของลูกค้าของเรา
ก่อนอื่นคุณต้องติดต่อกับ Google เพื่อรับการสนับสนุนโฆษณาของพวกเขาใน iframes (ซึ่งไม่สามารถใช้ได้อย่างกว้างขวางเมื่อเราสร้างเว็บไซต์นั้นขึ้นมา) จากนั้นคุณสามารถใช้ JavaScript เพื่อเรียกการโหลดเนื้อหา iframe ของ AdSense ซึ่งเป็นสิ่งที่เราทำ
โซลูชันนี้ตรงไปตรงมาเมื่อคุณได้รับการสนับสนุน iframe ของ Google
แก้ไข:ดูเหมือน - จากโพสต์ที่อ้างอิงโดย Virtuosi Media - การปฏิบัตินี้อาจไม่ได้รับการต้อนรับจาก Google ...
แก้ไข 2:
นี่คือรหัสที่เราใช้ใน iframe ลองใช้ดูว่าใช้งานได้หรือไม่อาจขอความช่วยเหลือจาก Google เป็นพิเศษ ลบออกtype="text/javascript" language="JavaScript"
เพื่อความชัดเจนที่ดีขึ้น:
<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>
เราเติมช่องทั้งหมดของเราผ่านรหัสโฆษณาล็อตดังนั้นเราจึงไม่เห็น PSA ใด ๆ
พวกเขาไม่มีตัวเลือกในปัจจุบันเท่าที่ฉันเห็น ตัวเลือกที่ดีที่สุดของคุณหากได้รับอนุญาตจาก Google TOS จะต้องใช้องค์ประกอบตัวแทนและแทนที่ด้วย JavaScript แบบไดนามิกหลังจากโหลดหน้าเว็บแล้ว อย่างไรก็ตามมันจะปรากฏขึ้นราวกับว่ามันอาจจะขัดต่อ TOS ดูกระทู้นี้สำหรับรายละเอียดเพิ่มเติม
คุณสามารถใช้ตัวยึดตำแหน่งเรียกรหัส Adsense แล้วสลับตัวยึดตำแหน่งด้วยโฆษณา ฉันใช้สิ่งนี้ในเว็บไซต์ของฉัน:
if ( ad1 = document.getElementById('ad-top') )
{
ad2 = document.getElementById('banner_tmp468');
ad1.appendChild(ad2);
ad2.style.display = 'block';
}
Google ยังแนะนำให้ทำเช่นนี้เมื่อพวกเขาบอกว่าคุณควรมีตำแหน่งโฆษณาที่สำคัญที่สุดของคุณเป็นอันดับแรกในรหัส HTML ของคุณ หากคุณต้องการทำให้สำเร็จคุณจะต้องใช้ JS หรือ CSS เพื่อย้ายหน่วยโฆษณาที่สำคัญน้อยลงไปที่ด้านบน (ภาพ) ของหน้าเว็บของคุณ
แต่เท่าที่ฉันรู้แล้วว่า AdSense แสดงผลโฆษณาแบบอะซิงโครนัสแล้ว ฉันเห็นมันแทบจะไม่ได้บล็อคเจดีย์ ไม่แน่ใจเกี่ยวกับเรื่องนี้แม้ว่า
เพราะ google พูดว่า "ช่วยทำให้เว็บเร็วขึ้น" ฉันเปลี่ยนโค้ดด้านบนเพื่อโหลดโฆษณา google เฉพาะเมื่อพวกเขามองเห็นได้ รหัสนี้ใช้งานได้ "ตามที่เป็น" สำหรับโฆษณา Google สถานที่หนึ่งรายการเท่านั้น แต่ฉันคิดว่าคุณสามารถแก้ไขได้ง่ายสำหรับโฆษณาอื่น ๆ ความแตกต่างกับรหัสอื่นคือ
เริ่มจากdiv
ที่ฉันวางโฆษณาในภายหลัง
<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>
ฉันได้ทำการทดสอบและทำงานกับเบราว์เซอร์ทั้งหมดแล้วฉันใช้ jQuery เพื่อความปลอดภัยมากกว่าที่ฉันหลีกเลี่ยงเบราว์เซอร์ที่ยาก
ป.ล. ฉันได้ทำโค้ดที่คล้ายกันเพื่อโหลด google plus และ facebook และรายการทั้งหมดที่โหลดโดยไม่ต้องใช้เหตุผลส่วนใหญ่
ไม่จำเป็นต้องทำเช่นนี้อีก show_ads.js ของ Google AdSense ตอนนี้ค่อนข้างไม่ตรงกัน คุณสามารถอ่านเพิ่มเติมเกี่ยวกับรายละเอียดเลือดในบล็อกอย่างเป็นทางการ:
เว็บของคุณครึ่งวินาทีไม่ช้าก็เร็ว
ไม่จำเป็นต้องเปลี่ยนโค้ดโฆษณา
document.write function
และกู้คืนในภายหลัง ข้อเสียเพียงอย่างเดียวคือฉันสงสัยว่า Google Adsense TOS อนุญาตให้ทำสิ่งนี้หรือไม่