2011-08-09 79 views
0

我正在製作一個網頁,需要能夠動態更改正在運行的JavaScript代碼。很多時候,動態代碼中的函數具有相同的名稱,但行爲不同,因此使用document.getElementsByTagName('head')[0].appendChild(script);不是一種選擇。現在,我在文檔的頭部添加了<script type="text/javascript" id="dynamicScript" src="about:blank"></script>,當我想要更改活動腳本時,我調用document.getElementById('dynamicScript').src="ajax.php?get=script&script=" + page;,並且PHP頁面吐出了corrent腳本(沒有標籤)。但它不起作用。我做錯了什麼,或者還有什麼我能做到的呢?動態Javascript導入

+0

也許這就是你想要的? http://api.jquery.com/jQuery.getScript/ –

回答

0

您需要添加一個新的<script>元素到DOM,而不僅僅是改變它。也無法卸載舊腳本而無需重新加載頁面。如果您需要刪除以前腳本聲明的函數和數據,則需要以編程方式執行。替換功能的作品。

最後我推薦使用像LABjs這樣的腳本加載器,RequireJS,ControlJS或者SexyJS。手動做是額外的工作。

編輯:如果你正在使用jQuery,並且不需要對什麼命令你的腳本在加載額外的控制,您也可以只使用getScript()

0

僅僅因爲你吐出正確javascript,並不意味着它正在被執行。正如Stefan指出的,一種選擇是使用jQuery的getScript插件來完成您的任務。