2011-03-29 52 views
2

我有一個實際上是演示文稿的頁面,非常像powerpoint。這是一個無限循環,它使用ajax自動更新,從上次開始下載新的演示內容。我可以更改腳本src並讓JavaScript運行新代碼嗎?

現在,當用戶決定更改幻燈片中的過渡效果時,以下行將會更改。

<script id='transition' type='text/javascript' src='transitions/script/slide_off_to_right_fade.js'></script> 

然而,即使我更換例如

<script id='transition' type='text/javascript' src='transitions/script/fade_in_out.js'></script> 

它仍然是同樣的事情,在那裏最初加載文檔時這整個標籤。

是否有一個特殊的函數/方法來實現這個功能?非常感謝。

Ps。一個數組跟蹤幻燈片的數量和停留在每張幻燈片上的時間相同的問題 - 我更新函數中的時間並運行函數,但它好像我從未改變過一個事物......更多關於這個在另一個帖子中...

回答

2

創建一個新的<script>元素並將其添加到DOM樹應該工作。如果您使用的是jQuery等JavaScript庫,則可以使用方便的getScript()函數。

+0

+1,'$ .getScript()'已經出現自像1.0版本,但人們似乎更喜歡重新發明輪子(我經常是其中之一,但是嘿,我知道我什麼時候做錯了) – davin 2011-03-29 18:09:57

+1

@davin:偶爾重建車輪是一項健康的運動:) – 2011-03-29 18:11:16

+0

事實上,雖然建議設置區分「偶然」從「往往不是」。而且,在網絡世界中,我發現堅持一個經過驗證的解決方案通常更爲明智,在更多的平臺上重塑輪子意味着測試,而不是值得的......但對於鍛鍊/好奇心,我完全同意。 – davin 2011-03-29 18:16:32

4

您可以動態創建腳本元素並將其插入到DOM中。如果你不使用jQuery,您可以在純JavaScript做法如下:

var ref = document.getElementsByTagName('script')[0], 
     script = document.createElement('script'); 
    script.setAttribute('type', 'text/javascript'); 
    script.setAttribute('src', 'transitions/script/fade_in_out.js'); 
    script.setAttribute('id', 'newTransition'); 
    ref.parentNode.insertBefore(script, ref); 
相關問題