2012-05-14 48 views
0

這可能嗎?如何運行嵌入到.innerHTML中的嵌入式JavaScript?

我插入一個簡單的測試片段這樣

<script type="text/javascript">//<![CDATA[ 
document.write('foo'); 
//]]></script> 

但不起任何作用。 (W3學校建議使用CDATA here,但這並沒有幫助)。

重申這段代碼被寫入body標籤的.innerHTML屬性中。

我在谷歌上看到了一些關於eval()的提及,但不太確定這是相關的還是很好的做法?

在eval中包裝代碼就像他們做here at W3沒有任何效果。

回答

2

JavaScript只在第一次讀取時執行,而不是在動態插入時執行。你將不得不使用類似eval()函數來執行實際腳本的內容。您還可以使用DOM功能(如getObjectsByTagName())來獲取腳本標記,並從中獲取其內容。

+0

是的,'eval()'通常不是很好的做法,但是可以有適當的時候。許多程序員使用這些功能來彌補更大的設計缺陷。鑑於缺乏實際調用腳本的上下文,我無法評論您的使用情況。 – taz

+0

我強烈建議不要使用.innerHTML來運行所有的JS。如果你沒有腳本運行,並且沒有事件處理程序來啓動腳本,你沒有辦法調用你使用.innerHTML插入的腳本。您可能需要查看jQuery及其.ready()函數(請參閱http://api.jquery.com/ready/)。你爲什麼試圖模擬一個onload事件?我假設你無法使用現有的onload事件或其他處理程序? 編輯 - 這是爲了迴應我不再看到的OP註釋 – taz

+0

當您使用實際對象動態添加它時執行它,而不是.innerHTML –