jQuery добавляет Google Adsense в div

У меня проблемы с Google AdSense, и он загружается до моего jQuery и убивает мои коды, поэтому я подумал, что попытаюсь добавить javascript Google Adsense в соответствующий div, используя функцию готовности документа, вот код, который я пытаюсь написать:

<script language="javascript" type="text/javascript">
$(document).ready(function(){
    $(".googleBanners").html("<script language='javascript' type='text/javascript'>\n" + "google_ad_client = 'pub-8487967187298044';\n" + "google_ad_slot = '1088799521';\n" + "google_ad_width = 250;\n" + "google_ad_height = 250;\n" + "</" + "script>\n" + "<script language='javascript' src='http://pagead2.googlesyndication.com/pagead/show_ads.js' type='text/javascript'>" + "</" + "script>");
});
</script>

Но я не очень хорошо пишу javascript/jQuery, поэтому, если бы кто-нибудь помог мне это реализовать, это было бы здорово.

Ошибка в FF, которую я сейчас получаю: «Ошибка: google_protectAndRun не определен». Я не уверен, что это значит, но я предполагаю, что неправильно написал код jQuery.. лол


person SoulieBaby    schedule 17.07.2009    source источник
comment
Итак, я попробовал другой угол, и я все еще получаю ту же ошибку. Я создал компонент в Joomla, который просто отображает рекламный код Google – sportsneo.com/google-ads И я подумал, что вызову его с помощью Ajaxify, который хорошо работает для других сайтов, которые я сделал с содержимым ajax, но по какой-то причине этот код Google AdSense меня ненавидит.. sportsneo.com/fantasy-killed-my-hsc ‹- страница, на которой должен загружаться код Google AdSense (правая рука сторона) в FF он переходит на пустую страницу с ошибкой, а IE ничего не отображает в поле, куда он должен идти.. :(   -  person SoulieBaby    schedule 17.07.2009


Ответы (10)


Я делаю это с помощью заполнителя в том месте, где я хочу, чтобы реклама появлялась.

<html>
   <body>
      <div id="googleadgoeshere"></div>
   </body>
</html>

Затем поместите google-код в контейнер в конце страницы.

<div id="adsense" style="display:none;">all the google javascript goes here</div>

Затем я использую jQuery для перемещения iframe, который код AdSense создает после завершения загрузки страницы.

$(window).load(function(){
    $("#adsense").find("iframe").appendTo("#googleadgoeshere"); 
    $("#adsense").remove();
});

Если вы просто попытаетесь переместить блок #adsense, вы получите пустую страницу. Если вы попытаетесь сделать это любым другим способом, вы получите пустую страницу. Google встроил активные способы проверки того, что код не перемещен. Если это так, ваша страница будет пустой. Почему Google сделал это, я не понимаю, но я нашел этот обходной путь, который работает для меня...

person Danny Roodbol    schedule 02.06.2010
comment
Какова политика Google в отношении этого? Вы нарушаете условия использования AdSense? - person Scott Whitlock; 14.02.2011
comment
Я согласен с тем, что говорит Скотт.. Кто-то должен уточнить, является ли это нарушением правил рекламного смысла, поскольку мы не будем вносить никаких изменений в код AdSense. - person Sangram Nandkhile; 15.11.2011
comment
Попросите кого-нибудь1 спросить на форуме Adsense, является ли это нарушением политики Google Adsense. - person suraj jain; 23.02.2012
comment
Это почти работает для меня. Каким-то образом объявление оказывается в верхнем левом углу страницы после appendTo. Он перемещает его в googleadgoeshere, но не показывает, где находится этот div. - person Tom Kincaid; 09.11.2012
comment
Другая проблема заключается в том, что рекламный скрипт выполняется только на первой загруженной странице. Он не выполняется и не отображается на последующих страницах. - person Tom Kincaid; 09.11.2012
comment
Том, чтобы решить вашу первую проблему, убедитесь, что элемент div, в который вы помещаете объявление, имеет значение атрибута position, отличное от inherited. - person Zack Brady; 11.04.2013

Вы не можете включать внешние скрипты таким образом.

Чтобы включить javascript после загрузки страницы, вы должны использовать функцию jQuery jQuery.getScript(), но я не знаю, будет ли это работать для Google Adsense.

Немного больше информации можно найти здесь:

https://web.archive.org/web/20120514044418/http://geek.littleredstring.com/17-load-adsense-last-jquery

person Philippe Leybaert    schedule 17.07.2009
comment
Спасибо за ссылку, я попробовал это, прежде чем прийти сюда, по какой-то причине код AdSense убивает мои другие скрипты jquery в IE..:/ Проверю вещь getScript.. :) - person SoulieBaby; 17.07.2009

После неудачных попыток с приведенными здесь кодами я взял объект jQuery, который использовал, и поместил его на новую html-страницу. Как только я это сделал, я просто использовал iframe, чтобы разместить его на странице с AdSense.

Теперь AdSense и jQuery работают одновременно без проблем.

person Adam    schedule 09.04.2012

Добавьте скрытый DIV с кодом AdSense где-нибудь на своей странице:

<div id='adsense' style="display:none">
    <script type="text/javascript"><!--
        google_ad_client = "ca-pub-xxxxxxxxxxxxxx";
        google_ad_slot = "xxxxxxxxxx";
        google_ad_width = 300;
        google_ad_height = 250;
        //-->
    </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</div>

Используя javascript, создайте динамический DIV для загрузки вашего объявления:

$("body").append("<div id='adslot' ></div>");

Код Jquery для вставки объявления:

var ad = $("#adsense").html();
$("#adslot").html(ad);

Это работает для меня.

person krisrak    schedule 23.08.2013
comment
Как я могу создать случайное место для рекламы Google? Например, у меня есть 10 постов, и я хочу, чтобы 2 из них были заменены рекламой Google, но случайным образом. Как я могу это сделать @krisrak? - person Anahit DEV; 04.09.2015

У меня была точно такая же проблема. В конце концов я решил это, используя jQuery для загрузки с src, указывающим на html-файл, содержащий javascript Google AdSense. Это довольно неэлегантно, так как код Google AdSense создает <iframe>. И так случилось, что я работаю с приложением Facebook, поэтому в моем случае у меня есть <iframe> (реклама Google) в <iframe> (тот, который я использовал, чтобы обойти ошибку Firefox) в <iframe> (мое приложение Facebook). ). Но это работает.

person MBuscemi    schedule 19.05.2010
comment
просто рекомендация, узнайте, как использовать инструменты редактирования сообщений, чтобы выделить ваши HTML-теги как код (а также любой код). тогда твой пост будет иметь смысл :) - person jaywon; 19.05.2010

Ответ Дэнни объяснил основное решение для этого после того, как я безуспешно экспериментировал самостоятельно, так что спасибо! Однако мне нужно было более сложное решение, так как у меня было неизвестное количество объявлений, которые я хотел заменить на данной странице, поэтому вот что я сделал:

Базовая схема html (php), аля формат Дэнни - обратите внимание на мое увеличение количества объявлений, основанное на различных факторах строк из запроса к базе данных, то есть такое, что невозможно узнать количество заранее:

<html>
   <body>
<? while ($r = mysql_fetch_assoc($rs)) { if (true) { ?>
      <div class="adslide"><?=$ads++?></div>
<? } } ?>
   </body>
</html>

Я выделил css для div AdSense, который я создам через мгновение, так как у меня есть один для каждого div AdSlide, созданного выше:

<style> .adsense { display: none; } </style>

Здесь, размещенные внизу страницы, я получаю фактические объявления из Google в html, причем количество определяется тем, сколько слотов у меня есть для них сверху:

<?php for ($i = 0; $i < $ads; $i++) { echo '<div class="adsense">'.$adscript.'</div>'; } ?>

И, наконец, я перебираю все рекламные объявления AdSense, записанные в html, и заполняю их одно за другим в рекламные слоты, которые были созданы в html, следя за тем, чтобы каждое объявление и слот использовались/заполнялись только один раз, удаляя их или их класс после того, как я закончу с ними:

<script>
// http://stackoverflow.com/questions/1142861/jquery-append-google-adsense-to-div
$(function () { var b, a = $(".adsense").first();
 for (; a.length > 0; a = $(".adsense").first())
 { b = $(".adslide").first(); b.append(a.find("iframe"));
  a.remove(); b.removeClass("adslide"); } });
</script>

Это очень странная ошибка от Google. Я могу только предположить, что это связано с некоторой защитой, созданной Google, чтобы люди не могли скрыть свою рекламу (путем размещения ее за пределами экрана или за другими элементами html или чем-то еще), чтобы попытаться собрать количество показов без фактического отображения рекламы (т.е. чтобы вы могли разместить миллион это в html, но пользователь никогда их не увидит, и вы собираете деньги, пока Google не узнает). Однако тот факт, что эта ошибка не проявляется в IE и Safari, но присутствует в Firefox и собственном Chrome от Google... Это странно. Они обязательно должны исправить это на своей стороне.

Для тех, кто работает с тем же программным обеспечением: я сам столкнулся с этой проблемой при реализации карусели jQuery (http://sorgalla.com/projects/jcarousel/), в которой реклама смешивалась с фотографиями, отправленными пользователями в карусели.

person Rogus    schedule 04.12.2010

Только этот код работает

var i = 0;
obj = $(".materialContent p");
size = obj.size();
for (i=0; i<size; i++)
{
    cur = obj[i];
    if (i == 2)
    {
        $("#mainTopAdvDiv").appendTo(cur); 
    }
}

Не удалять, переместить полный div.

person Vova Popov    schedule 17.12.2011

Я использую этот вариант. Все хорошо!

$(document).ready(function() {
$("div.youtube_ad").html("<iframe src='/adsense.html' width='350' height='290' scrolling='no'></iframe>")
});

В adsense.html поместите код AdSense «как есть».

person gunjubas    schedule 13.06.2012
comment
Google запрещает размещать AdSense в iframe и может отключить вашу учетную запись за это. - person Tom Kincaid; 09.11.2012

В link на странице, загружаемой через ajax, я устанавливаю data-ajax="false", а затем на загруженной странице прошу пользователя использовать кнопку «Назад».

person cauleyfj    schedule 11.04.2012

Вот как бы я это сделал. Просто и коротко.

<script>
$(window).load(function(){
    $('#adsense').fadeIn(0);
});
</script>

<div id="adsense" style="display:none;">
   [YOUR ADSENSE SCRIPT HERE]
</div>
person Zeus    schedule 23.12.2014