Кто-нибудь знает, как разместить рекламные объявления AdSense в веб-приложении GWT?
Как разместить Google Adsense в GWT
Ответ 1
Вы можете поместить javascript-код из Adsense на одну HTML-страницу, с которой начинается GWT. Таким образом, реклама не будет отображаться в той же области, что и GTW, но выше/ниже кода GWT. Для рекламы, которая может быть в порядке.
В этом примере банер выше приложения:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>www.javaoracleblog.com</title>
<script type="text/javascript" language="javascript" src="com.javaoracleblog.aggregator.nocache.js"></script>
</head>
<body>
<script type="text/javascript"..
ADsense code here
</script>
<!-- OPTIONAL: include this if you want history support -->
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
</body>
</html>
Чтобы указать Google WT, что сайту Adense Adense можно доверять, вам нужно добавить URL-адрес, соответствующий регулярному выражению, в аргумент командной строки -whitelist.
Обратите внимание, что это, вероятно, не решит проблемы, описанные в статье "Почему я сбросил GWT".
Ответ 2
В соответствии с этот поток в AdSense:
Короткий вариант, вы не можете использовать Adsense через Ajax, не нарушая программные политики /t & c's
Длинная версия...
Код объявления прошел через вызов xmlhttp не отображается, он просто рассматривается как текст (следовательно, responseText). Единственный способ выполнения js-кода - использовать "responseXML" в сочетании с Команда "exec()".
Например...
Если ваш xml содержит что-то строки:
Это содержание от внешнего файл javascript-кода идет здесь
Вы назначили переменную (называемую page_data, например), используя ajax_obj.responseXML, запустите XML через парсер и запустить
exec (переменная js или строка из XML здесь);
Не очень полезно от Adsense но, как это было сделано.
Также стоит упомянуть Почему я сбросил GWT:
Еще одна проблема заключалась в моем AdSense баннеры. Так как у меня не было много содержимое на странице, баннеры были иногда от темы. Еще больший проблема заключалась в том, что баннеры остались то же самое, когда люди искали разные ключевые слова (поскольку ajax обновление не вызвало AdSense обновить). Я решил это, выполнив поиск с обновлением страницы вместо вызов ajax. Ajax-часть сайт был ограничен сортировкой, огранкой, i18n и отображения подсказок.
Ответ 3
Вы можете проверить интервью, я сделал с InfoQ. Он включает образец главы из моей книги, и это происходит на SEO.
Это не тривиально, но я думаю, что решения в этой главе позволяют GWT хорошо работать в среде, где важна SEO. Основное решение - реализовать что-то, что я называю "начальной загрузкой". Это означает, что ваши страницы берут информацию, которая обычно встречается в запросах GWT-RPC и сериализует их на странице. Виджет GWT загружает эту информацию без запроса RPC. Пока ваша страница сериализует информацию на JavaScript, легко написать также <noscript> на страницу, которая может использоваться для SEO.
Взгляните на прилагаемый PDF файл: InfoQ GWT. Весь образец проекта находится здесь: код google с источником на github.
Ответ 4
Если вы действительно хотите, чтобы AdSense был "внутри" GWT, я бы использовал виджет Frame. В основном виджет Frame генерирует < iframe... > внутри вашего кода GWT. Сначала я подумал, что iframe, UGH! Но <iframe> тег по-прежнему является частью спецификации HTML5 и даже расширен некоторыми атрибутами, которые, похоже, существуют именно для этой цели "песочницы". И с соответствующим стилем CSS у вас не будет полос прокрутки вокруг вашего <iframe> .
И вот реальное решение:
Вы должны положить
<ui:style>
.sponsor {
border: 0em;
width: 20em;
height: 6em;
float: right;
display: inline;
}
</ui:style>
<g:HTMLPanel>
<g:Frame ui:field="sponsor" url="issue/extern/Google-AdSense.html" styleName="{style.sponsor}"/>
</g:HTMLPanel>
в ваш .ui.xml файл и логику в соответствующий .java:
@UiField
Frame sponsor;
Также вы должны поместить фактический код Google AdSense (материал <script> ) в отдельный файл HTML внутри общей папки GWT, который в данном случае называется Google-AdSense.html и находится внутри extern в общей папке. Проблема (в атрибуте url фрейма) является в этом случае выходной папкой GWT.
И вот как это выглядит: объявление в правом верхнем углу.
Кстати, это также способ вставить код Google Analytics в GWT.
Ответ 5
Вот как я это делаю. У меня есть демо-версия и исходный код здесь: http://code.google.com/p/gwt-examples/wiki/DemoGwtAdsene
Ответ 6
Я мог бы сделать это, используя тег DFP Small Business + Async Publisher + AdSense:
Вот код:
На вашей главной странице поставьте свой тег издателя, например:
<head>
<script type="text/javascript" src="http://www.googletagservices.com/tag/js/gpt.js"></script>
<script type="text/javascript">
var slot1 = googletag.defineUnit('/XXXX/ca-pub-YYYYYYYYYYYYYYY/transaction', [468, 60], 'div-gpt-ad-ZZZZZZZ-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
</script>
...
</head>
Я создал представление с uiBinder, с div с идентификатором, указанным во главе, следующим образом:
<g:HTMLPanel height="62px" width="100%">
<div id='div-gpt-ad-ZZZZZZZ-0' style='width:470px; height:60px;'>
</div>
</g:HTMLPanel>
В методе onLoad() представления вы инициализируете объявление следующим образом:
@Override
protected void onLoad() {
setupAd();
}
public static native void setupAd() /*-{
$wnd.googletag.cmd.push(function() {$wnd.googletag.display('div-gpt-ad-ZZZZZZZ-0')});
}-*/;
Чтобы обновить объявление, просто вызовите обновленное объявление для слота, указанного в заголовке:
public static native void refreshAd() /*-{
$wnd.googletag.pubads().refresh([$wnd.slot1]);
}-*/;
Что все!
Для получения дополнительной информации о теге издателя отметьте: http://support.google.com/dfp_sb/bin/answer.py?hl=en&answer=1649768
Теперь я изо всех сил стараюсь понять, как сделать бот AdSense для craw моего приложения ajax. Я реализовал схему Ajax Crawling:
https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
Но у меня есть информация с форума AdSense о том, что бот AdSense (Mediapartners-Google) не работает с схемой Ajax с экранированным фрагментом. Кто-нибудь знает, планирует ли Google сделать какой-либо прогресс на этом?
Это ограничивает этот подход, чтобы обслуживать только объявления на основе интересов, поскольку рекламная реклама на основе контекста зависит от схемы обхода ajax.
Ответ 7
Бонус Google AdSense сканирует вашу страницу, чтобы определить, какие объявления будут обслуживаться. Поэтому вы не должны размещать AdSense на страницах с главным динамическим контентом. Это не сработает.
Возможно, вам стоит заглянуть в другие рекламные программы?
Ответ 8
Вы можете использовать AdSense и GWT вместе, не используя фреймы или другие хаки, если уделить особое внимание тому, как вы создаете страницы хоста.
Ключ должен включать ваш код AdSense на главной странице, а затем управлять элементом dom, содержащим объявление, но не отсоединять от страницы. Таким образом, вы можете переместить объявления в тело вашего другого gwt-кода, если структура dom не изменяется.
Если вы отсоедините и снова присоедините элемент dom dom, то он будет работать в Chrome и Firefox, но IE покажет пустое место. Сначала я попытался переместить элемент DIV в DockLayoutPanel и подумал, что все отлично, пока я не запоздало протестировал его в IE.
Итак, это нормально:
Element element = Document.get().getElmentById("ad");
element.getStyle().setPosition(ABSOLUTE);
element.getStyle().setTop(20, PX);
Но это не так:
myPanel.add(ElementWrapper.wrap(element));
потому что добавление виджета другому виджету переименовывает его.
Это означает, что вы не можете использовать какой-либо из встроенных средств LayoutPanel для хранения вашего рекламного div, потому что Layout не может обернуть существующий элемент (он создает свой собственный DIV в своем конструкторе). Возможно, вы сможете изменить материал панели макета, чтобы он обертывал элемент и не переустанавливал его... но я еще не пробовал это.
Я тестировал результаты в IE6 +, Chrome и Firefox. Недостатком является то, что вы не можете обновлять рекламу, пока не загрузите новую страницу. Но в моем случае GWT использовался для улучшения html-страниц, поэтому это не было проблемой. В любом случае... пользователи чаще нажимают на другое объявление, чем те, которые они читают несколько раз? Не уверен, что это так важно.