Вы можете использовать AdSense и GWT вместе, не используя фреймы и другие хаки, если вы позаботитесь о том, как создавать свои хост-страницы.
Ключ заключается в том, чтобы включить свой код AdSense на страницу хоста, а затем манипулировать элементом dom, содержащим объявление, но не отсоединять его от страницы. Таким образом, вы можете переместить рекламу в текст другого кода gwt, если структура dom не изменилась.
Если вы отсоедините и снова подключите содержащий элемент dom, он будет работать в Chrome и Firefox, но IE покажет пустое место. Сначала я попытался переместить DIV-элемент ads в DockLayoutPanel и думал, что все было замечательно, пока не запоздало проверил его в IE.
Так что все в порядке:
Element element = Document.get().getElmentById("ad");
element.getStyle().setPosition(ABSOLUTE);
element.getStyle().setTop(20, PX);
Но это не так:
myPanel.add(ElementWrapper.wrap(element));
потому что добавление виджета в другой виджет переопределяет его.
Это означает, что вы не можете использовать какие-либо встроенные элементы LayoutPanel для хранения вашего рекламного блока, потому что Layout не может обернуть существующий элемент (он создает собственный DIV в своем конструкторе). Возможно, вы сможете изменить материал панели макета, чтобы он оборачивал элемент и не переопределял его ... но я еще не пробовал это.
Я протестировал результаты в IE6 +, Chrome и Firefox. Недостатком является то, что вы не можете обновить рекламу, пока не загрузите новую страницу. Но в моем случае GWT использовался для улучшения HTML-страниц, так что это не проблема. В любом случае ... пользователи чаще нажимают на другое объявление, чем на то, которое они читали несколько раз? Не уверен, что это так важно.