Angular.js & Adsense

Я пытаюсь разместить рекламу в своем приложении angular.js, и я сделал некоторое чтение и обнаружил, что невозможно просто скопировать и вставить обычный код AdSense.

Я слышал, что вы должны "заключить его в директиву с переходом", и единственный пример, который я могу найти, это другое сообщение Stackoverflow: AngularJs и социальный плагин AddThis

Может кто-нибудь помочь дать указания о том, как это сделать с Google Adsense?

Ответ 1

вам нужно создать директиву

yourApp.directive('ads', function() {
    return {
        restrict: 'A',
        templateUrl: 'partiels/adsTpl',
        controller: function(){
            (adsbygoogle = window.adsbygoogle || []).push({});
        }
    };
});

создать шаблон с вашим кодом объявления в моем случае "partiels/adsTpl.html"

<ins class="adsbygoogle"
 style="display:inline-block;width:300px;height:250px"
 data-ad-client="ca-pub-00000000"
 data-ad-slot="000000"></ins>

добавить директиву на свою страницу

 <div data-ads></div>

поместите вызов adSense js в раздел заголовка главной страницы перед угловыми

<head>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
....

et voila, это отлично работает для меня

Ответ 2

Вы должны сделать директиву обертки для adSense script, как это...

<div data-my-ad-sense>
  <!-- Google AdSense -->
  <script async src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
  <ins class="adsbygoogle"
       style="display:inline-block;width:728px;height:90px"
       data-ad-client="ca-pub-0000000000"
       data-ad-slot="0000000000"></ins>
  <script>
  (adsbygoogle = window.adsbygoogle || []).push({});
  </script>
</div>

И добавьте эту директиву в свои директивы...

directive('myAdSense', function() {
  return {
    restrict: 'A',
    transclude: true,
    replace: true,
    template: '<div ng-transclude></div>',
    link: function ($scope, element, attrs) {}
  }
})

Это асинхронный код adSense.

Ответ 3

Я не уверен, допустимо ли выполнение следующей вещи в соответствии с AdSense T & C.

удалите все связанные с Google переменные перед изменением URL

Object.keys(window).filter(function(k) { return /google/.test(k) }).forEach(
        function(key) {
            delete(window[key]);
        }
    );

Ответ 4

В файле javascript укажите пользовательскую директиву для google adsense

window.app.directive('googleAd', [
  '$timeout', function($timeout) {
    return {
      restrict: 'A',
      link: function(scope, element, attr) {
        return $timeout(function() {
          var adsbygoogle, html, rand;
          rand = Math.random();
          html = "<ins class='adsbygoogle' style='display:block' data-ad-client='ca-pub-7656700967113967' data-ad-slot='1894787830' data-ad-format='auto'></ins>";
          $(element).append(html);
          return (adsbygoogle = window.adsbygoogle || []).push({});
        });
      }
    };
  } 

Информация AdSense для указанной выше директивы предоставляется Google при выборе объявления. На странице для показа рекламы используйте следующий тег

<div google-ad=""></div>

В Index.html используйте

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

Здесь приведено видео-учебное пособие для получения этой информации AngularJS + Adsense

Ответ 5

В контроллере AngularJS добавьте функцию init(), добавьте строку

(adsbygoogle = window.adsbygoogle || []).push({});

Затем вызовите эту функцию init() в вашем html файле вида.

См. также на
https://github.com/featen/ags/blob/master/webapp/js/controllers/dict.js