jQuery добавляет Google Adsense в div
У меня проблемы с google adsense, и он загружается перед моим jQuery и убивает мои коды, поэтому я подумал, что попытаюсь добавить Google Adsense javascript в соответствующий 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 неправильно.. лол
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 div, вы получите пустую страницу. Если вы попытаетесь сделать это любым другим способом, вы получите пустую страницу. Google был встроенные активные способы проверки того, что код не перемещается. Если это ваша страница будет пустой. Почему google сделал это вне меня, но я нашел этот обходной путь, чтобы работать на меня...
вы не можете включать внешние скрипты таким образом.
чтобы включить javascript после загрузки страницы, вы должны использовать jQuery С помощью jQuery.getScript() функция, но я не знаю, будет ли это работать для Google Adsense.
немного больше информации можно найти здесь:
после попытки и неудачи с кодами здесь, я закончил тем, что взял объект jQuery, который я использовал, и поместил его на новую html-страницу. Как только я это сделал, я просто использовал iframe, чтобы разместить его на странице с adsense.
теперь adsense и jQuery работают одновременно без проблем.
добавьте скрытый 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);
это работает для меня.
у меня была точно такая же проблема. В конце концов я решил это, используя jQuery для загрузки src, указывающего на html-файл, содержащий Google AdSense javascript. Это довольно неэлегантно, так как код Google AdSense создает <iframe>
. И я работаю с приложением Facebook, поэтому в моем случае у меня есть <iframe>
(объявление Google) в <iframe>
(тот, который я использовал, чтобы обойти ошибку Firefox) в <iframe>
(приложение Facebook). Но это работает.
ответ Дэнни объяснил основное решение для этого после того, как я безуспешно экспериментировал самостоятельно, так что спасибо! Однако мне нужно было более сложное решение, так как у меня было неизвестное количество объявлений, которые я хотел заменить на данной странице, поэтому вот что я сделал:
основной набросок html (php), формат Ала Дэнни -- обратите внимание на мое приращение количества объявлений, основанное на различных факторах строк из запроса БД, т. е. такое, что невозможно узнать количество заранее:
<html>
<body>
<? while ($r = mysql_fetch_assoc($rs)) { if (true) { ?>
<div class="adslide"><?=$ads++?></div>
<? } } ?>
</body>
</html>
я отделил css для AdSense div, который я создам через мгновение, поскольку у меня есть один для каждого adslide div, созданного выше:
<style> .adsense { display: none; } </style>
здесь, помещенный в нижней части страницы, я получаю фактические объявления из google в html, количество определяется тем, сколько слотов у меня есть для них сверху:
<?php for ($i = 0; $i < $ads; $i++) { echo '<div class="adsense">'.$adscript.'</div>'; } ?>
и, наконец, я просматриваю все объявления adsense, написанные в html, и заполняю их один за другим в слоты adslide которые были созданы в 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/) который имел объявления смешанные с представленными пользователем фотографиями на карусели.
работает только этот код
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.
Я использую этот вариант. Все хорошо!
$(document).ready(function() {
$("div.youtube_ad").html("<iframe src='/adsense.html' width='350' height='290' scrolling='no'></iframe>")
});
в adsense.html поставил вам код AdSense "AsIs".
на link
на страницу, которая загружалась через ajax
, Я data-ajax="false"
и затем на странице, которая была загружена, я прошу пользователя использовать кнопку "Назад".
вот как я бы это сделал. Просто и коротко.
<script>
$(window).load(function(){
$('#adsense').fadeIn(0);
});
</script>
<div id="adsense" style="display:none;">
[YOUR ADSENSE SCRIPT HERE]
</div>