1

リモートの場所からスクリプトをロードする多くの html/head/script タグを持つ html ページがあります。ページが読み込まれた後、プログラムによってページからスクリプトを削除したいと考えています。

スクリプトを削除するにremoveChildは、DOMElement.

element.removeChild(child);

この呼び出しは正常に実行されますが、スクリプトから読み込まれた関数はまだメモリ内にあります。ロードされた機能には影響しません。

私も試しました:

element.replaceChild( new, old );

どちらも効果はありません。これはバグですか、それとも機能ですか? 以前にロードされたスクリプトをプログラムで削除する方法は?

4

1 に答える 1

3

Removing a script element after it has been loaded does not remove the scripts themselves. There is no way I know of to "unload" scripts that have already been loaded. If there are targeted functions that you want to replace, you can redefine those global symbols which will just replace the old code with different code, but javascript doesn't provide the ability to unload.

For example, if the script has a global function called callMe(), you can just redefine that function in the global scope to something else:

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

Whichever definition comes last will be in force.

于 2012-08-13T21:46:26.753 に答える