我的网站上有一种“免费增值”模式,因此,如果订阅了用户,他们将看不到页面上的Google Adsense广告。

因此,我想根据我Javasript代码中的条件if()语句来制作Adsense广告或不显示。

但是,从Google那里获得的代码旨在直接插入HTML中,而且除此之外,他们还在做一些棘手的事情,其中​​包括在注释区域中设置一些变量,这我无法理解。

代码如下所示:

<script type="text/javascript"><!--
google_ad_client = "xx-xxx-00000000000000000000";
/* karamoh */
google_ad_slot = "0000000000";
google_ad_width = 320;
google_ad_height = 50;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

是否可以这种方式进行转换,以便我可以在其周围包裹一个if()语句?

(我想我可以将所有内容放到document.write()函数中,但这似乎很简单。当然,有一种方法可以更直接地利用Javascript吗?)

最佳答案

最干净的方法是检查服务器端的客户端是否优质,并且根本不要在发送给客户端的页面中插入标签。

如果您由于某种原因无法访问它,并且不介意对show_ads.js的额外请求,则似乎将无意义的google_ad_client设置为Adsense服务可以回复400,而根本不会绘制任何广告,因此您可以使用它代替广告代码的第一行:

if(premiumClient)
    google_ad_client = "some-nonsense-value"
else
    google_ad_client = "your-correct-value"
end

测试还显示,如果您输出带有<script>document.write标记,则它会像在文档中一样真实地阻止执行,因此您自己建议的内容或以下干扰性较小的代码也可能起作用:
<script type="text/javascript"><!--
google_ad_client = "xx-xxx-00000000000000000000";
/* karamoh */
google_ad_slot = "0000000000";
google_ad_width = 320;
google_ad_height = 50;
//-->
if(!premiumUser)
    document.write('<scr'+'ipt type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"><'+'/script>')
</script>

我不记得是否确实可以保证它确实会阻止其余执行,因此,由于show_ads.js中存在另一个document.write,它可能现在在某些浏览器中失败,或者将来突然开始失败。

关于javascript - 我可以有条件地展示Google广告吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10876924/

10-09 18:33