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