เป็นไปได้ไหมที่จะใช้ Google Adsense แบบอะซิงโครนัสเช่นไม่มีการปิดกั้น


11

ฉันรู้ว่ามีวิธีการแบบอะซิงโครนัสในการใช้ Google Analyticsแต่มีบางอย่างที่คล้ายกับ Adsense หรือไม่ ฉันไม่พบจากการค้นหาปัจจุบันของฉัน - ฉันสงสัยว่ามีเคล็ดลับทั่วไปที่ฉันหายไปหรือไม่?

คำตอบ:


6

นี่มัน:

<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 (แบบอะซิงโครนัส) " โดยทั่วไปฉันพบวิธีที่จะทำให้โค้ดโฆษณาทำงานแบบอะซิงก์อย่างแท้จริง ..


1
+1 สำหรับโซลูชันอัจฉริยะที่ให้ไว้ในลิงก์ เป็นวิธีที่น่าสนใจมาก ๆ ในการสำรองข้อมูลมาตรฐานdocument.write functionและกู้คืนในภายหลัง ข้อเสียเพียงอย่างเดียวคือฉันสงสัยว่า Google Adsense TOS อนุญาตให้ทำสิ่งนี้หรือไม่
Marco Demaio

+1 สำหรับแนวคิดฉันใช้และทำให้ดีขึ้นเล็กน้อยแล้วโพสต์ไว้ที่นี่ ฉันไม่สามารถทำให้ GS_googleAddAdSenseService นี้ทำงานร่วมกับแนวคิดอื่นได้
Aristos

5

ใช่มีวิธีใช้ 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 ใด ๆ


1
คุณให้รายละเอียดเพิ่มเติมเกี่ยวกับการติดต่อกับ Google เกี่ยวกับเรื่องนี้ ฉันไม่เห็นสิ่งใดในบัญชี AdSense ของฉัน
Virtuosi Media

นอกจากนี้ฉันอยากรู้ว่าหน่วยโฆษณายังแสดงโฆษณาที่เกี่ยวข้องหรือเพียงแค่ PSA และวิธีที่คุณแก้ไขปัญหานั้น
Virtuosi Media

ที่จริงแล้วเราเติมช่องทั้งหมดของเราผ่านรหัสโฆษณาดังนั้นเราจึงไม่เห็น PSA ใด ๆ
โอลิเวอร์

เมื่อใช้วิธีนี้ฉันจะได้รับ GA_googleFillSlotWithSize ไม่ได้กำหนดข้อผิดพลาด
Timo Huovinen

@YuriKolovsky: ดูเหมือนว่าสคริปต์ของ Google โหลดไม่ถูกต้อง ดูการแก้ไข 2 ของฉัน: คุณอาจต้องสมัครใช้วิธีนี้กับ Google
โอลิเวอร์

2

พวกเขาไม่มีตัวเลือกในปัจจุบันเท่าที่ฉันเห็น ตัวเลือกที่ดีที่สุดของคุณหากได้รับอนุญาตจาก Google TOS จะต้องใช้องค์ประกอบตัวแทนและแทนที่ด้วย JavaScript แบบไดนามิกหลังจากโหลดหน้าเว็บแล้ว อย่างไรก็ตามมันจะปรากฏขึ้นราวกับว่ามันอาจจะขัดต่อ TOS ดูกระทู้นี้สำหรับรายละเอียดเพิ่มเติม


2

คุณสามารถใช้ตัวยึดตำแหน่งเรียกรหัส Adsense แล้วสลับตัวยึดตำแหน่งด้วยโฆษณา ฉันใช้สิ่งนี้ในเว็บไซต์ของฉัน:

if ( ad1 = document.getElementById('ad-top') )
{
    ad2 = document.getElementById('banner_tmp468');
    ad1.appendChild(ad2);
    ad2.style.display = 'block';
}

Google ยังแนะนำให้ทำเช่นนี้เมื่อพวกเขาบอกว่าคุณควรมีตำแหน่งโฆษณาที่สำคัญที่สุดของคุณเป็นอันดับแรกในรหัส HTML ของคุณ หากคุณต้องการทำให้สำเร็จคุณจะต้องใช้ JS หรือ CSS เพื่อย้ายหน่วยโฆษณาที่สำคัญน้อยลงไปที่ด้านบน (ภาพ) ของหน้าเว็บของคุณ

แต่เท่าที่ฉันรู้แล้วว่า AdSense แสดงผลโฆษณาแบบอะซิงโครนัสแล้ว ฉันเห็นมันแทบจะไม่ได้บล็อคเจดีย์ ไม่แน่ใจเกี่ยวกับเรื่องนี้แม้ว่า


0

เพราะ google พูดว่า "ช่วยทำให้เว็บเร็วขึ้น" ฉันเปลี่ยนโค้ดด้านบนเพื่อโหลดโฆษณา google เฉพาะเมื่อพวกเขามองเห็นได้ รหัสนี้ใช้งานได้ "ตามที่เป็น" สำหรับโฆษณา Google สถานที่หนึ่งรายการเท่านั้น แต่ฉันคิดว่าคุณสามารถแก้ไขได้ง่ายสำหรับโฆษณาอื่น ๆ ความแตกต่างกับรหัสอื่นคือ

  • โหลดโฆษณาเฉพาะในกรณีที่ผู้ใช้มองเห็นได้
  • โหลดโฆษณาและวางลงบน div (ไม่ใช่ที่ส่วนท้ายของหน้า)
  • ทำงานได้กับเบราว์เซอร์ทั้งหมดเพราะฉันโหลดรายการทั้งหมดที่ต้องการ (ไม่เพียง แต่แรก)

เริ่มจาก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 และรายการทั้งหมดที่โหลดโดยไม่ต้องใช้เหตุผลส่วนใหญ่


0

ไม่จำเป็นต้องทำเช่นนี้อีก show_ads.js ของ Google AdSense ตอนนี้ค่อนข้างไม่ตรงกัน คุณสามารถอ่านเพิ่มเติมเกี่ยวกับรายละเอียดเลือดในบล็อกอย่างเป็นทางการ:

เว็บของคุณครึ่งวินาทีไม่ช้าก็เร็ว

ไม่จำเป็นต้องเปลี่ยนโค้ดโฆษณา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.