У меня есть <div>, на котором размещена реклама Google. Мой веб-сайт в основном основан на AJAX, и нет необходимости обновлять браузер. Это означает, что мои объявления тоже не будут обновляться, что не идеально, если пользователь весь день смотрит на одно объявление.
Итак, мне нужен был способ обновить конкретный <div> на странице. Я нашел много решений, но они не работали. Например, используя функцию HTML JQuery:
$("#ads").html("google ad script here");
Это удалось обновить всю страницу, даже не представляя, как это сделать. Я также могу сделать запрос AJAX к HTML-странице, содержащей рекламу Google, но я предполагаю, что это будет иметь тот же эффект, что и предыдущая попытка.
Я не хочу использовать iFrames.
Есть ли у меня другие варианты? Мой гороховый мозг больше не может думать о нем. :)
Это разрешено, поскольку я буду инициировать обновление только тогда, когда пользователь щелкает ссылку.
Ярким примером является Yahoo Mail - их новый почтовый ящик AJAX использует тот же метод, когда пользователь щелкает ссылку, а затем отображается новое объявление.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Не разрешается (согласно условиям AdSense) пытаться перезагрузить рекламу в течение жизненного цикла страницы. Кроме того, это вряд ли возможно (благодаря архитектуре платформы).
это, безусловно, возможно с реализацией двойного щелчка
Это не разрешено. но я думаю, вы можете использовать для этого iframe. Я видел хорошие уроки по этому поводу. Я пробовал сделать это с помощью ajax, откатав свои изменения для AdSense TOS
Как указано в обоих других ответах, автоматическое обновление ваших рекламных объявлений AdSense не допускается. Я понимаю, что вы намереваетесь обновить объявление только в ответ на действие пользователя, но по-прежнему не разрешено, хотя должно быть!
Помните, что вы хотите обновить рекламные объявления, чтобы вы могли показывать новые. Показ рекламы называется «впечатлением». Когда вы используете код для обновления объявлений, вы автоматически генерируете показы рекламы.
Состояние Правила программы AdSense (выделено мной):
Invalid Clicks and Impressions
Clicks on Google ads must result from genuine user interest. Any method that artificially generates clicks or impressions on your Google ads is strictly prohibited. These prohibited methods include but are not limited to repeated manual clicks or impressions, using robots, automated click and impression generating tools, third-party services that generate clicks or impressions such as paid-to-click, paid-to-surf, autosurf, and click-exchange programs, or any deceptive software.
Обновление вашей рекламы - это нарушение буквы правила против генерации показов. С учетом сказанного, я думаю, что любой разумный человек согласится с тем, что обновление рекламы в приложении AJAX в ответ на поведение пользователя (например, в ответ на щелчок) не является нарушением дух правила.
Например, представьте, что вы переписываете все свое приложение, чтобы прекратить использование AJAX. Это явно хуже для ваших пользователей (это медленнее, страница мигает при каждом нажатии, страница не может динамически обновляться в фоновом режиме), но технически это не является нарушением правил программы AdSense.
Ясно Google имел в виду, чтобы запретить автоматическую замену рекламы каждые пять секунд (создание «слайд-шоу» рекламы). Google также имел в виду запретить делать ваш сайт более привлекательным для рекламодателей, делая вид, что у вас больше посещений, чем у вас на самом деле. Я уверен, что они не использовали намереваться, чтобы помешать вам разработать высокопроизводительный веб-сайт AJAX ... но, к сожалению, иногда правила имеют непредвиденные последствия.
Конечно, как вы изначально указали, вы МОЖЕТЕ обновлять свои рекламные объявления, если встроите их в iframe и измените его местоположение. (Вот как использовать iframe в приложении AJAX для обновления AdSense.)
Вы отклонили iframe в своем первоначальном вопросе, возможно, потому что знали, что использование iframe нарушит политику Google ... но если вы настаиваете на нарушении правил, вы также можете нарушить их полностью! ;-)
В конечном счете, я думаю, вы обнаружите, что создание показов таким образом не стоит риска: вы «обновите» объявления только для того, чтобы обнаружить, что Google просто показывает вам те же самые объявления, что и раньше.
Это было хорошее чтение, спасибо :) - Я все еще уверен, что это не является незаконным. У меня другое толкование предложения, выделенного жирным шрифтом. Я не считаю, что функция, запускаемая из-за того, что пользователь нажимает ссылку, в любом случае является искусственной! :)
Я не думаю, что схема ОП нарушает какое-либо разумное толкование буквы политики. Трудно увидеть какое-либо существенное различие между тем, что предлагает OP, и обычной практикой использования JavaScript для перехвата нажатий кнопок и загрузки нового URL-адреса. В обоих случаях у нас есть действие пользователя -> JavaScript -> изменить содержимое страницы.
Подумайте об этом так: продукт Google называется «AdSense для контента». Это не для веб-приложений; это для статических страниц, например блогов. (В общем, AdSense для веб-приложений был бы гораздо более сложным и амбициозным проектом, потому что веб-приложения постоянно меняются; вы можете понять, почему они выбрали легкий путь.) Изменение содержимого веб-страниц - обычная практика для веб-приложений, но это не значит, что AdSense поддерживает это!
Вчера Google анонсировал AdSense для Ajax, чего вы действительно хотели с самого начала.
А теперь похоже, что AdSense для AJAX упразднен. Они больше не принимают запросы, поэтому либо близки к запуску, либо решили, что это не стоит угрозы для их бизнеса. Хотя у всех нас в этой ветке есть веские причины попробовать это, клоуны, которые пытаются обмануть систему, угрожают целостности своей рекламной платформы, что делает ее менее желательной для людей. Хмм. Кто-нибудь добился успеха с AdSense для карт?
Если вы заметили рекламу в Gmail, всякий раз, когда вы нажимаете на письмо (вызов ajax), объявление обновляется. Это заставляет меня думать, что обновление объявления по клику пользователя является законным.
@Vladimir Gmail - продукт Google; они не используют AdSense для контента. Было бы очень неразумно предполагать, что вы как партнер AdSense можете что-то делать только потому, что Google позволяет себе это делать.
@DanFabulich - Если в объявлении не написано AdSense, это не означает, что источником рекламируемого контента не является AdSense, или вы думаете, что Google создал отдельную рекламную платформу для Gmail? :) Если я останусь без жизнеспособной альтернативы, я рискну. Часть, выделенная жирным шрифтом, говорит об искусственном создании впечатлений - навигация по приложению на основе Ajax с богатым клиентом не является искусственным в моем словаре.
@Vladimir Это зависит от вас, но, как я уже сказал, я думаю, что рисковать не стоит, потому что в большинстве случаев вы не получите никакой пользы. При обновлении объявления то же самое будет отображаться во второй раз. Вы рискуете получить бессрочный бан на всю жизнь. (Да, они действительно так делают.)
Как ребята из Mashable это делают? , Checkout, mashable.com/2012/08/19/top-10-tech-10/… Проверить слайд-шоу изображений, вниз по странице, при нажатии на каждое изображение, объявление обновляется?
@pradeep, на самом деле они используют ajax для получения новых данных при прокрутке вниз, поскольку это бесконечная прокрутка и добавление рекламы каждые 2 сообщения. Их объявления расположены в другом html файле, поэтому это не вызвано триггером обновления рекламы Google, его триггер обновлен из html файла mashable.com. Я думаю, что они это делают именно так. В любом случае бесконечная прокрутка съедает мою оперативную память
Показ страницы - это не то же самое, что запрос страницы. Один запрос может привести к нескольким показам. Таким образом, вам действительно разрешено обновлять объявление, когда посетитель создает новый показ страницы. Когда у вас есть галерея изображений ajax, просмотр нового изображения = отображение новой страницы
Google «Как правило, впечатление переводится как представление пользователя о конкретном элементе на вашем сайте [...]» Возможно, этот ответ был правильным в 2009 году, но неверным в 2015 году.
Этот ответ - полная чушь. Ничто в ответе не подтверждает утверждение о том, что Google запрещает автоматическое обновление одностраничных приложений. И на самом деле, если вы читаете их страницу, хотя она явно не затрагивает эту проблему, она явно соответствует духу их условий.
Просто включите рекламу на страницах, которые вы загружаете через ajax. Нет ничего плохого в загрузке рекламы из файла через ajax для каждой страницы.
если я загружаю Read.inc, в котором есть контент и реклама Щелкните что-нибудь на странице, и вы попадете на Make.inc, где есть содержание и реклама.
Что случилось с этим? Это органично. Одна загрузка с рекламой как часть контента.
Это то же самое, что щелкнуть ссылку.
На самом деле я еще не пробовал это, но это, безусловно, кажется логичным.
Это не сработает с AdSense. Он загрузит не более 3 объявлений на страницу. Нужно как-то выгружать старую рекламу, для которой нет API.
Я знаю, что опаздываю на вечеринку на полтора года, но ... Возможно, проблема с рекламой в том, что они используют document.write (рекламные серверы печально известны этим, но я не знаю, использует ли AdSense это или нет.)
В этом случае у меня есть библиотека, которая может помочь: writeCapture.js. Пример:
$('#ads').writeCapture().html('<script src = "whatever-your-adsense-code-is"> </script>');
Здесь используется jQuery, но есть и отдельная версия.
Что касается того, является ли это нарушением TOS ... Gmail динамически меняет рекламу, так что все не так уж плохо. Пока контент тоже меняется, я думаю, что все в порядке.
Вы не опоздали (я действительно опоздал). Я попробую ваш скрипт прямо сейчас, потому что у меня такая же проблема, не могу обновить div с помощью блока AdSense.
Новые "теги" Google DFP позволяют, в частности, "обновлять объявления для AJAX".
refresh
pubService.refresh(slots) Refreshes the specified array of slots on the page with new ads.
Parameters:
array slots - Optional array of slots to refresh. If not supplied, all ad slots are refreshed. Example:
var slot1 = googletag.defineUnit("/1234567/leaderboard", [728, 90], "div-1").addService(googletag.pubads());
var slot2 = googletag.defineUnit("/1234567/skyscraper", [160, 600], "div-2").addService(googletag.pubads());
// The call to refresh fetches a new ad for each slot
googletag.pubads().refresh([slot1, slot2]); http://support.google.com/dfp_sb/bin/answer.py?hl=en&answer=2372721&expand=pubservice_details#refresh
+1, хотя это не AdSense, но он предлагает достойную альтернативу. Я очень рад, что они вернули это! Некоторое время его не было.
Я работаю с спортивным приложением по крикету в прямом эфире, которое обновляет рекламу каждый раз, когда появляется новый овер. Это ничем не отличается от телевизора.
Просто к сведению - DFP не поддерживает блоки ссылок AdSense (блоки высотой 15 пикселей). Поддерживаются только рекламные блоки.
Вышеупомянутое будет работать только при инициализации с помощью асинхронного кода. Пожалуйста, обратитесь к этой статье: support.google.com/dfp_sb/answer/3058726?hl=en
Вы можете обновить рекламные места Google с помощью следующего кода. Поместите это в функцию JS, которую вы хотите обновить, Ads. Он должен обновить все объявления на странице.
if ( undefined !== googletag ) {
googletag.pubads().refresh();
}
Справка Google Ad Manager - перезагрузка объявлений без обновления страницы
У вас есть ссылка на это?