Eşzamansız google adsense kullanmak, yani engellememek mümkün müdür?


Yanıtlar:


6

bunu yapar:

<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 Eşzamansız (eşzamansız) " adlı bu blog öğesini temelde reklam kodunun gerçekten eşzamansız yayınlanmasını sağlamak için bir yol buldum.


1
Bağlantıda sağlanan akıllı çözüm için +1. Standardı yedekleme document.write functionve daha sonra geri yükleme şekli çok ilginç . Tek dezavantajı, Google Adsense Hizmet Şartları'nın bu tür şeyler yapmasına izin verip vermediğini merak ediyorum.
Marco Demaio

Fikir için +1, onu alıyorum ve biraz daha iyi çalışmasını sağlayıp buraya gönderiyorum. Bu GS_googleAddAdSenseService'in diğer fikirle çalışmasını sağlayamıyorum.
Aristos

5

Evet, bir yol var - iframe kullanmak. Reklam içeriğinin, müşterilerimizin sitelerinden birine eşzamansız olarak yüklenmesini sağlıyoruz.

Önce iframe'lerde (bu siteyi oluşturduğumuzda yaygın olarak kullanılamayan) reklamlarını desteklemek için Google ile iletişim kurmanız gerekir. Daha sonra, yaptığımız şey olan AdSense iframe içeriğinin yüklenmesini tetiklemek için JavaScript'i kullanabilirsiniz.

Google'ın iframe desteğine sahip olduğunuzda çözüm gerçekten basittir.

Düzenleme: Görünüşe göre - Virtuosi Media tarafından atıfta bulunulan mesajlardan - bu uygulama Google tarafından kabul edilmeyebilir ...

Edit 2: Bu, iframe'de kullandığımız koddur. Belki de özellikle Google'dan destek istemeden çalışıp çalışmadığını görmek için deneyin. type="text/javascript" language="JavaScript"Daha iyi okunabilirlik için kaldırıldı :

<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>

Tüm alanlarımızı reklam alanı kimlikleriyle dolduruyoruz, bu yüzden hiç PSA görmüyoruz.


1
Bu konuda Google ile iletişim kurma konusunda daha ayrıntılı bilgi verebilir misiniz? AdSense hesabımda hiçbir şey göremiyorum.
Virtuosi Media

Ayrıca, reklam birimlerinin hala alakalı reklamlar mı yoksa yalnızca PSA'lar mı sunduğunu ve bu soruna nasıl çalıştığınızı merak ediyorum.
Virtuosi Media

Aslında, tüm alanlarımızı adslot kimlikleriyle dolduruyoruz, bu yüzden hiç PSA görmüyoruz.
Oliver

Bu yöntemi kullanırken, GA_googleFillSlotWithSize tanımlı değil hatası alıyorum
Timo Huovinen

@YuriKolovsky: Google'ın komut dosyası düzgün yüklenmiyor gibi görünüyor. Düzenleme 2'ye bakın: Google'a bu yöntem için başvurmanız gerekebilir.
Oliver

2

Şu anda görebildiğim kadarıyla seçeneği sunmuyorlar. Google Hizmet Şartları tarafından izin verildiyse, en iyi seçeneğiniz bir yer tutucu öğe kullanmak ve sayfa yüklendikten sonra dinamik olarak JavaScript ile değiştirmek olurdu. Ancak, TOS'a karşı gelmiş gibi görünmektedir. Daha fazla ayrıntı için bu konuya bakın.


2

Bir yer tutucu kullanabilir, Adsense kodunu arayabilir ve ardından yer tutucuyu reklama geçirebilirsiniz. Sitemde böyle bir şey kullanıyorum:

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

Google, HTML kodunuzda en önemli reklam konumunuza sahip olmanız gerektiğini söylediğinde bunu bile yapmanızı önerir. Bunu başarmak istiyorsanız, daha az önemli reklam birimlerini sayfanızın üst kısmına (görsel) taşımak için JS veya CSS kullanmanız gerekir.

Ancak bildiğim kadarıyla AdSense zaten reklamları eşzamansız olarak oluşturuyor. Çok nadiren sayfa yüklemeyi engellediğini gördüm. Bu konuda emin değilim.


0

Google "web'i daha hızlı hale getirelim" dediği için google reklamlarını yalnızca görünür olduklarında yüklemek için yukarıdaki kodu değiştiriyorum. Kod sadece bir google yer reklamı için "olduğu gibi" çalışır, ancak daha fazla reklam için kolayca değiştirebileceğinizi düşünüyorum. Diğer kod ile farklı

  • Reklamları yalnızca kullanıcı tarafından görülebilirse yükleyin
  • Reklamları yükler ve bir div'a yerleştirir (sayfanın sonuna değil)
  • Gereken tüm öğeleri yüklediğim için (yalnızca ilkini değil) tüm tarayıcılarla çalışır

divReklamları daha sonra yerleştirdiğimden başlayarak .

<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>

Ben test ve tüm tarayıcılar ile çalışıyorum, ben sadece tarayıcılar zor önlemek daha güvenli olmak için jQuery kullanın.

ps, ben google artı yüklemek için benzer kod var, ve facebook ve dışarı ile yüklenen tüm bu öğeleri çoğu zaman.


0

Bunu yapmaya gerek yok. Google AdSense'in show_ads.js kodu artık biraz eşzamansız. Kanlı ayrıntılar hakkında daha fazla bilgiyi resmi blog'da okuyabilirsiniz:

Web'iniz, Yarım Saniye Yakında

Reklam kodunu değiştirmeye gerek yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.