2015-04-16 2 views
0

Это скелет кода, который я использую для своего сайта, чтобы переместить загрузку объявления в нижнюю часть веб-сайта. Хотя почти все работает хорошо, я нахожу, что время от времени при первой загрузке страницы объявления не появляется. Я не уверен, что это потому, что браузер не знает, как перезагрузить заполненный DOM автоматически, но его раздражает, потому что каждый раз, когда я нажимаю обновление, появляется объявление. Я не уверен, если его Google не сможет показывать рекламу или если ее браузеры не обрабатывают мой код по назначению.Перемещенный код AdSense для завершения, но реклама иногда не отображается при загрузке исходного сайта

<!-- Website header here --> 
    <div ID="ADW">ADVERTISEMENT</div> 
    <div ID="AB"><!-- advertisement goes here after load --></div> 
    <script type="text/javascript"> 
      // choose ad unit based on user's screen 
      // size and format ad box to that size. 
      var s="#####"; 
      var w=728; 
      var h=90; 
      if(window.innerWidth<500){ 
        if(w>320){s="####";w=320;h=50}else{s="#####";w=234;h=60} 
      } 
      var AD=document.getElementById('AB'); 
      AD.style.height=h+'px'; 
      AD.style.width=w+'px'; 
    </script> 
    <!-- Website content here --> 
    <div ID="ADS"> 
      <!-- Ad will load in this DIV after webpage is loaded --> 
      <script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" type="text/javascript" async></script> 
      <ins ID="XX" class="adsbygoogle"></ins> 
      <script type="text/javascript"> 
        // loaderr is only set on pages where ad isn't supposed to run. 
        if (typeof(loaderr)=='undefined'){ 
        (adsbygoogle=window.adsbygoogle||[]).push({params:{data_override_format:"true",data_page_url:"http://example.com/",google_ad_slot:s,google_ad_client:"#####",google_ad_width:w,google_ad_height:h}}); 
        } 
      </script> 
      <script type="text/javascript"> 
        var x=document.getElementById('XX'); //cram ad in 
        x.style.height=h+'px'; // I know sizes are equal but ad can fit 
        x.style.width=w+'px'; // and this was tested. 
        // give title of all adsense IFRAMES 
        // to meet accessibility guidelines 
        var xif=document.getElementsByTagName('IFRAME'); 
        for(var i=0;i<xif.length;i++){ 
        xif[i].title='Advertisement '+i; 
        } 
      </script> 
    </div> 
    <script type="text/javascript"> 
      // Display the ad but 10% of the time it doesn't appear. 
      if (typeof(AD) !== 'undefined'){ 
        AD.appendChild(document.getElementById('ADS')); 
      } 
    </script> 

Для меня, чтобы исключить вещи, я хочу знать, как добавить функцию перекрашивать, чтобы сделать объявление, которое было предназначено, чтобы показать на самом деле показать. Я не прошу изменения объявления во время загрузки страницы. Я просто прошу показать объявление, не требуя, чтобы пользователь ударил обновление. Есть ли решение javascript для этого, не нарушая правила AdSense?

Я заменил номер объявления AdSense и идентификатор издателя #####, чтобы другие пользователи не могли общаться с моими объявлениями.

ответ

0

Async attribute

Первый <script> имеет async attribute which means that it will load asynchronously. Похоже, у вас есть «состояние гонки», поскольку оно работает только иногда.

Кратчайшее решение: было бы удалить атрибут async как это заставит скрипты для загрузки синхронно (так, до тех пор, пока у вас есть скрипты, размещенные в нижней части <body> в вашем HTML, то DOM будет быть готовым к моменту запуска скриптов).

Другой вариант: Для того, чтобы быть более четко о том, когда вы хотите, сценарии для запуска, вы можете использовать DOMContentLoaded or load events в зависимости от того, если вы хотите выполнять скрипты, как только DOM готов или когда все остальное на странице делается погрузка. Например,

document.addEventListener('DOMContentLoaded', function() { 
 
    // code to run after DOM has been loaded and parsed 
 
    alert('DOM is ready!'); 
 
});

+0

Кто-нибудь был успешным на то, чтобы доход с помощью асинхронной кода Google с атрибутом асинхронной удалены? –

+1

Атрибут 'async' не имеет ничего общего с доходом; он просто позволяет вашему сценарию запускать асинхронно, если у вас несколько сценариев, но если вам нужно, чтобы DOM существовал до запуска вашего скрипта, вам необходимо запрограммировать его таким образом: либо с помощью 1) синхронного сценария внизу '' body 'или 2) помещать код внутри обратного вызова события DOMContentReady или' load'. Удалил ли атрибут 'async' решение вашей проблемы? – trevordmiller

+0

Это было несколько, но я решил теперь лучше всего переместить рекламный код ближе к вершине. Спасибо за вашу помощь. –