3

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

所以我想根据if()我的 Javasript 代码中的条件语句来制作 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 吗?)

4

2 回答 2

2

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

如果您由于某种原因无法访问它并且不介意对 show_ads.js 的额外请求,似乎设置一个无意义的google_ad_clientAdsense 服务会回复 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>

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

于 2012-06-04T08:55:29.300 回答
1

类似的东西怎么样:

if(userIsNotSubscribed)
    document.getElementById("advertisementDiv").innerHTML = advertisement;
    // Where advertisement = The Code given to you by Google
于 2012-06-04T06:08:12.843 回答