2013-01-19 23 views
1

我正在爲我的網站構建一個小型廣告系統,以便我可以在數據庫中添加新廣告。大多數廣告都包含圖片,我只會將圖片作爲innerhtml寫入div。這工作正常。 但是,有些廣告只包含一個腳本標籤,應將其放置在需要廣告的位置。因爲我必須從.NET中的代碼或ajax調用中動態執行此操作,所以我遇到了一些問題。 只設置一個div的innerHTML的是這樣的:在div中放置腳本標記並執行

<div id="asdf" runat="server"> 
    <script type="text/javascript" src="xxxxx"></script> 
</div> 

...是行不通的,因爲它不會得到執行。無論是在頁面加載時將其設置在後面的代碼中,還是使用ajax調用進行設置。

我可能能夠以某種方式調用eval(),但這並不能保證腳本將被放置在我想要的位置,如果我正確的話。

任何想法?這不是一個新問題,許多廣告網絡都有腳本標籤而不是圖片等。

編輯:該JavaScript文件位於另一個域。如果我將src屬性設置爲僅包含警報的本地文件,則一切正常!你不能讓這種情況發生在域之間嗎?

+1

我明白你是加載頁面後異步添加這些數據? –

+0

我試過這個方法,並在後面的代碼頁面加載。無論使用哪種方法,腳本都會被添加,但不會被執行。 – Andreas

+0

如果將'src'設置爲包含警報的本地文件,則告訴我問題出在第三方腳本中。它可能正在等待已經解僱的'document.ready'? –

回答

1

你可以試試這個:

var script = document.createElement('script'); 
script.src = 'xxxxxx'; 
script.type = 'text/javascript'; 
var div = document.getElementById('asdf'); 
div.appendChild(script); 
+0

我試過這個和標籤被添加,但沒有執行:/ – Andreas

+0

那麼。我認爲我正在嘗試調用的外部腳本在加載頁面後調用時效果不佳,或發生了其他一些奇怪的錯誤。上面的代碼就是我用過的,對於其他腳本來說,它的效果很好。因此,即使我沒有解決我的問題,我也會將其標記爲正確答案。我必須以完全不同的方式解決它們。謝謝 – Andreas

0

可以動態添加腳本標記的,如果你知道是哪個源要添加一個文件,這樣的:

// Get head object from DOM. 
var head_obj = document.getElementsByTagName('HEAD').item(0); 

// Create script object. 
var script_obj = document.createElement('script'); 
script_obj.type = 'text/javascript'; 
script_obj.src = File_Path; 

// Define functions to be called on script load and load body. 
script_obj.onload = onLoadFunc; 

// Appendnd script object to the head object. 
head_obj.appendChild(script_obj); 

希望幫助

+0

但是這增加了劇本的頭部。我必須把它放在我想要廣告的地方。 – Andreas

+0

正是因爲您希望腳本得以執行的原因。 – SHANK