2014-02-12 20 views
1

這個想法是在ready()函數完成後,讓用戶點擊一個按鈕。然後,它後面的java腳本代碼將運行ajax來檢索一些java腳本代碼片段(作爲文本),然後執行剛剛下載的代碼。是否可以通過ajax下載java腳本代碼片段,然後在運行時執行它?

可能嗎?任何框架都可以做到嗎?

+0

是與eval()...你不需要一個框架。 – Cracker0dks

+0

jQuery的[.getScript](https://api.jquery.com/jQuery.getScript/)是一個很好的幫手。 – freakish

回答

0

你甚至不需要ajax來做到這一點。您可以簡單地創建一個新的script元素,將src屬性設置爲您的JS文件並將其插入DOM(通常位於head元素中)。

var script = document.createElement('script'); 
script.setAttribute('src', 'myfile.js'); 
document.head.appendChild(script); 
+0

嗨Tibos,我還沒有嘗試過上面的代碼。下載代碼片段會在加載DOM後運行嗎?我發現有人在運行時使用eval()來執行javascript代碼,但在Chrome上不可靠:(請參閱user1251840最後的評論,http://stackoverflow.com/questions/3248384/document-createelementscript-synchronously)。你知道任何框架可以做得更好嗎?謝謝。 – user3300681

+0

片段內的代碼在下載後立即執行。但是,如果在這些代碼片段中設置了一個變量,則該變量在調用腳本中將不可用。 – Tibos

0

感謝Tibos爲我提供了線索。我用你的代碼來搜索我想要的東西,在這裏。

Jan Wolter描述了他在運行時動態加載和執行javascript的解決方案。 (http://unixpapa.com/js/dyna.html)。似乎動態JS加載的不穩定性與JS代碼文件大小有關。如果JS代碼文件很大,不同的瀏覽器可能會有不同的表現。揚提供了一種避免它的方法。 再次感謝。

相關問題