2013-10-24 30 views
0

當發生某個特定事件時,我會傾聽 - 我想用JavaScript調用我的Google廣告代碼來填充div'divDynamicAdvert`。如何在運行時向innerHTML添加javascript警報

巨大的感謝「tenbits」爲我展示,我需要被附加的腳本節點是這樣的:

function myEventHandler(evt)   //called when event is caught 
{ 
    var script = document.createElement('script'); 
    script.textContent = 'alert(1)'; 
    document.getElementById('divDynamicAdvert').appendChild(script); 
} 

這個偉大的工程,但在發生警報,​​我需要插入谷歌廣告使用Javascript:

<script type="text/javascript"><!-- 
     google_ad_client = "ca-pub-3286208413631803"; 
     /* Standard MPU */ 
     google_ad_slot = "8630273973"; 
     google_ad_width = 300; 
     google_ad_height = 250; 
     //--> 
</script> 
<script type="text/javascript" 
     src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
</script> 

我已經試過:

var script = document.createElement('script'); 
script.textContent = 'google_ad_client = 'ca-pub-3286208413631803'; google_ad_slot = '8630273973'; google_ad_width = 300; google_ad_height = 250;'; 
document.getElementById('divDynamicAdvert').appendChild(script); 

var script = document.createElement('script src="http://pagead2.googlesyndication.com/pagead/show_ads.js"'); 
document.getElementById('divDynamicAdvert').appendChild(script); 

我試圖逃避斜線過,但沒有運氣......你們能幫忙嗎?

+0

Hb您只需在JS邏輯中調用'innerHTML'的'alert()'? – adamb

+0

如果您以這種方式插入您的廣告,您的廣告實際上會覆蓋您的頁面。 –

+0

也許如果你能告訴你想要達到的目的,而不是如何給你一個更好的選擇。 – plalx

回答

1

正如@slebetman已經說過,innerHTML不會工作。如果你想通過DOM來評估腳本,而不是eval(code),等等 - 與SCRIPT節點做到這一點:

var script = document.createElement('script'); 
script.textContent = 'alert(1)'; 

document.getElementById('divDynamicAdvert').appendChild(script); 
// actually it doesnt matter where you append it 

編輯

在任何情況下創建一個腳本節點,然後用它操作 - 腳本添加內容OR附加src屬性,如果你引用外部源

var script; 

// content 
script = document.createElement('script') 
script.textContent = 'alert(1)' 
document.body.appendChild(script); 

// google api source 
script = document.createElement('script'); 
script.src = 'ANY_URL'; 
// -> in this case, same as script.setAttribute('src', 'ANY_URL'); 

document.body.appendChild(script); 

有一些進一步的問題,不要他請在評論中提問。

+0

這就是輝煌TenBits,謝謝 - 我已更新我的問題以反映您的意見... – wotney