2012-08-13 65 views
1

我有一個html頁面,它有很多從遠程位置加載腳本的html/head/script標籤。我想在加載頁面後以編程方式從頁面中刪除腳本。在chrome中使用document.removeChild()刪除腳本

要刪除腳本,我使用DOMElement的「removeChild」方法。

element.removeChild(child); 

該調用成功執行,但從腳本加載的函數仍在內存中。對加載的函數沒有影響。

我也曾嘗試

element.replaceChild(new, old); 

兩人都沒有效果。 這是一個錯誤? 如何以編程方式刪除以前加載的腳本?

+2

你不能簡單地忽略導致問題的'.js'文件嗎? – Biotox 2012-08-13 21:37:04

+0

如果只有它那麼簡單...':P' ... – 2012-08-13 21:38:23

回答

3

刪除加載後的腳本元素不會刪除腳本本身。我不知道「卸載」已經加載的腳本。如果有要替換的目標函數,則可以重新定義那些將用不同代碼替換舊代碼的全局符號,但JavaScript不提供卸載功能。

例如,如果腳本有一個名爲callMe()全局函數,你可以重新在全球範圍內,其功能是別的東西:

function callMe() { /* replacement function that does nothing */} 

無論定義是最後將生效。

+0

有趣。我如何重新定義全局函數?原諒我,我是javaScript開發新手。 – Nambi 2012-08-13 22:02:46

+0

@Nambi - 我在關於替換函數的回答中增加了一些。 – jfriend00 2012-08-13 22:08:17

+0

如果「function callMe()」在另一個遠程腳本中,並且使用appendChild()將遠程腳本添加到了dom中,它是否會重新定義「callMe()」? – Nambi 2012-08-13 23:09:25