jQuery 将 Google Adsense 附加到 div

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1142861/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 10:45:37  来源:igfitidea点击:

jQuery append Google Adsense to div

jqueryappendadsense

提问by SoulieBaby

I'm having issues with google adsense and it loading before my jQuery and killing my codes, so I thought I'd try to append the Google Adsense javascript to the appropriate div using the document ready function, here's the code I'm trying to write:

我遇到了 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>

But I'm not so good writing javascript/jQuery so if someone could help me implement this that would be fantastic.

但我不太擅长编写 javascript/jQuery,所以如果有人能帮我实现这个,那就太棒了。

The error in FF I'm currently getting is "Error: google_protectAndRun is not defined". I'm not sure what that means, but I'm guessing I've written the jQuery code wrong.. lol

我目前遇到的 FF 中的错误是“错误:google_protectAndRun 未定义”。我不确定这意味着什么,但我猜我写错了 jQuery 代码..大声笑

采纳答案by Danny Roodbol

The way I do this is by having a placeholder on the spot I want the ad to appear.

我这样做的方法是在我希望广告出现的地方放置一个占位符。

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

Then place the google-code in a container at the end of the page.

然后将谷歌代码放在页面末尾的容器中。

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

I then use jQuery to move the iframe the adsense code creates once the page is done loading.

然后,我使用 jQuery 移动页面加载完成后 Adsense 代码创建的 iframe。

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

If you just try to move the #adsense div you will end up with a blank page. If you try to do this most any other way, you will end up with a blank page. Google had built in active ways to check that the code is not moved. If it is, your page will be blank. Why google has done this is beyond me, but I have found this workaround to work for me...

如果您只是尝试移动 #adsense div,您最终会得到一个空白页面。如果您尝试以任何其他方式执行此操作,最终将得到一个空白页面。谷歌已经建立了积极的方式来检查代码没有被移动。如果是,您的页面将是空白的。为什么谷歌这样做超出了我的范围,但我发现这个解决方法对我有用......

回答by Philippe Leybaert

You can't include external scripts that way.

您不能以这种方式包含外部脚本。

To include javascript after the page has loaded, you should use jQuery's jQuery.getScript()function, but I don't know if that would work for Google Adsense.

要在页面加载后包含 javascript,您应该使用 jQuery 的jQuery.getScript()函数,但我不知道这是否适用于 Google Adsense。

A little more info can be found here:

可以在此处找到更多信息:

http://geek.littleredstring.com/17-load-adsense-last-jquery

http://geek.littleredstring.com/17-load-adsense-last-jquery

回答by Adam

After trying and failing with the codes on here, I ended up taking the jQuery object that I was using and putting it in a new html page. Once I did that, I just used an iframe to place it on the page with the adsense.

在尝试使用此处的代码并失败后,我最终将我正在使用的 jQuery 对象放入一个新的 html 页面中。一旦我这样做了,我只是使用一个 iframe 将它放在带有 Adsense 的页面上。

Now, adsense and jQuery run at the same time with no problems.

现在,adsense 和 jQuery 可以同时运行,没有任何问题。

回答by krisrak

Add a hidden DIV with adsense code in your page somewhere:

在您的页面中的某处添加一个带有 adsense 代码的隐藏 DIV:

<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>

Using javascript create dynamic DIV for your ad to load:

使用 javascript 为您的广告创建动态 DIV 以加载:

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

Jquery code to insert the Ad:

插入广告的 Jquery 代码:

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

This works for me.

这对我有用。

回答by Zeus

This is how I would do it. Simple and short.

这就是我要做的。简单而简短。

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

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

回答by cauleyfj

In the linkto the page that was being loaded via ajax, I set data-ajax="false"and then on the page that was loaded I ask the user to use the back button.

link通过 加载的页面中ajax,我设置data-ajax="false"然后在加载的页面上要求用户使用后退按钮。

回答by Max Ganistrat

I use this variant. All good!

我使用这个变体。都好!

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

In adsense.html put you AdSense code 'AsIs'.

在 adsense.html 中输入 AdSense 代码“AsIs”。

回答by IkimashoZ

I had this exact same problem. I eventually solved it by using jQuery to load an with a src pointing to an html file that contains the Google AdSense javascript. This is rather inelegant, since the Google AdSense code creates an <iframe>. And, I happen to be working with a Facebook application, so in my case, I've got an <iframe>(the Google Ad) in an <iframe>(the one I used to get around the Firefox error) in an <iframe>(my Facebook app). But, it works.

我有这个完全相同的问题。我最终通过使用 jQuery 加载一个带有指向包含 Google AdSense javascript 的 html 文件的 src 来解决它。这相当不雅,因为 Google AdSense 代码创建了一个<iframe>. 而且,我碰巧正在使用 Facebook 应用程序,所以在我的情况下,我在(我的 Facebook 应用程序)中有一个<iframe>(谷歌广告)<iframe>(我用来解决 Firefox 错误的<iframe>那个)。但是,它有效。

回答by Chris

Danny's answer explained the basic solution for this after I unsuccessfully experimented extensively on my own, so thanks! However, I needed a more elaborate solution as I had an unknown number of ads that I wanted to replace on a given page, so here's what I did:

在我自己进行了广泛的实验失败后,丹尼的回答解释了这个问题的基本解决方案,所以谢谢!但是,我需要一个更复杂的解决方案,因为我想在给定页面上替换未知数量的广告,所以我这样做了:

The basic html (php) outline, ala Danny's format -- note my incrementing of the ad count, based on various factors of rows from a db query, i.e. such that it is impossible to know the count beforehand:

基本的 html (php) 大纲,ala Danny 的格式 - 请注意我根据 db 查询中的行的各种因素增加的广告计数,即不可能事先知道计数:

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

I separated out the css for the adsense div I'll create in a moment as I have one for each adslide div created above:

我为我稍后创建的 adsense div 分离了 css,因为我为上面创建的每个 adslide div 都有一个:

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

Here, placed in the bottom of the page, I get the actual ads from google into the html, the count being determined by how many slots I have for them from above:

在这里,放置在页面底部,我将来自 google 的实际广告放入 html,计数取决于我从上面为它们提供的广告位数量:

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

And finally I cycle through all the adsense ads written into the html and fill them in, one by one, into the adslide slots that were created in the html, making sure each ad and slot are only used/filled once by removing them or their class after I'm done with them:

最后,我遍历所有写入 html 的 Adsense 广告,并将它们一一填充到在 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>

This is an extremely weirdbug from google. I can only assume it's related to some protection google created to prevent people from hiding their ads (by positioning them offscreen or behind other html elements or something) to try and collect impression counts without actually displaying ads (i.e. so you could put a million of these in the html but the user would never see them, and you collect the cash until google finds out). However, the fact that this bug does not show up in IE and Safari but does in Firefox and Google's own Chrome... That's weird. They should definitely fix this on their side.

这是来自谷歌的一个非常奇怪的错误。我只能假设它与谷歌创建的一些保护有关,以防止人们隐藏他们的广告(通过将它们放置在屏幕外或其他 html 元素或其他东西之后)来尝试收集展示次数而不实际显示广告(即这样你就可以放置一百万这些在 html 中,但用户永远不会看到它们,你收集现金直到谷歌发现)。然而,这个错误并没有出现在 IE 和 Safari 中,而是出现在 Firefox 和谷歌自己的 Chrome 中......这很奇怪。他们绝对应该在他们这边解决这个问题。

For those who are working with the same software: I ran into this problem myself when implementing a jQuery Carousel (http://sorgalla.com/projects/jcarousel/) that had ads mingled with user submitted photos in the carousel.

对于那些使用相同软件的人:我自己在实现 jQuery Carousel (http://sorgalla.com/projects/jcarousel/) 时遇到了这个问题,该轮播广告与用户提交的照片混合在轮播中。

回答by Vova Popov

Only this code working

只有此代码有效

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

Do not remove, move full div.

不要删除,移动完整的 div。