如何从 DOM 卸载 JavaScript 资源及其所有定义的对象?
我正在开发一个简单的框架,可以将 html 片段加载到“主”html 中。每个片段都是自包含的,可能包含对其他 JS 和 CSS 文件的引用。JS 和 CSS 资源被解析并动态添加到 html。当片段从 DOM 中删除/替换时,我想删除它的 JS 和 CSS。
如果我删除下面示例中的脚本元素,page1.js 中定义的函数仍然可用。
<html>
<head>
<script src="page1.js" type="text/javascript"></script>
</head>
<body>
...
有没有办法从 DOM 中卸载 page1.js 对象?
========我使用的测试代码 ========
我尝试了我在下面的评论中得到的建议;使用清理功能删除添加的对象 - 但即使这样也会失败。我用于测试的来源:
<html>
<head>
<script type="text/javascript">
function loadJSFile(){
var scriptTag = document.createElement("script");
scriptTag.setAttribute("type", "text/javascript");
scriptTag.setAttribute("src", "simple.js");
var head = document.getElementsByTagName("head")[0];
head.appendChild(scriptTag);
}
function unloadJSFile(){
delete window.foo;
delete window.cleanup;
alert("cleanedup. typeof window.foo is " + (typeof window.foo));
}
</script>
</head>
<body>
Hello JavaScript Delete
<br/>
<button onclick="loadJSFile();">Click to load JS</button>
<br/>
<button onclick="foo();">call foo()</button>
<br/>
<button onclick="unloadJSFile();">Click to unload JS</button>
</body>
</html>
simple.js 源代码:
var foo = function(){
alert("hello from foo");
}