2012-06-04 33 views
2

我在我的網站上有一種「免費增值」模式,這樣如果用戶訂閱了,他們就不會在網頁上看到Google Adsense廣告。我可以有條件地製作Google廣告展示嗎?

所以我想使AdSense廣告顯示或不取決於我的Javasript代碼中的條件if()聲明。

但是,從谷歌獲得的代碼被設計爲直接插入到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()功能,但似乎這樣unelegant肯定有更直接地利用JavaScript的方式?)

回答

1

如何沿着線的東西:

if(userIsNotSubscribed) 
    document.getElementById("advertisementDiv").innerHTML = advertisement; 
    // Where advertisement = The Code given to you by Google 
+0

可能會失敗,因爲從廣告代碼調用的show_ads.js使用document.write,並且它往往不能很好地與真正動態的DOM訪問一起玩。 –

+0

JSONP如何?這甚至會觸發問題嗎? – Vishnu

0

如果可能的話,使用PHP或ASP做它。

+1

這是如何回答這個問題的? –

+0

即使不直接回答問題,我認爲這是一個很好的建議。 – simon

+0

@Mike Sav誰說過它的答案?我們可以在此發佈答案嗎?它的相關問題,這就是它。 – kiranvj

2

最乾淨的方法是檢查服務器端,如果你的客戶端是優質的,並且根本不要在發送給客戶端的頁面中插入標籤。

如果您由於某種原因無法訪問它,並且不介意對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,它可能會在某些瀏覽器中失敗,或者在將來突然開始失敗。

+0

我喜歡你的第二個建議,因爲即使這意味着要多於我希望的代碼,如果我沒有向Google發出400回覆的呼叫,那麼對於高級用戶可能會有更少的等待時間。 – Questioner

+1

不幸的是,似乎經過一些實驗,這些方法不起作用。我一直與Google支持人員聯繫,他們告訴我,我需要在他們的AdSense代碼中進行硬編碼,否則它將無法工作。你有沒有通過改變實施上述建議,並讓他們工作?我只是問,因爲如果你有,那麼也許我可以通過谷歌支持進一步解決問題。 – Questioner

相關問題