如何从DOM中卸载包含所有已定义对象的JavaScript资源?
我正在开发一个简单的框架,可以将html片段加载到一个“主”html中。每个片段都是自包含的,并且可以包含对其他JS和CSS文件的引用。JS和CSS资源被解析并动态地添加到html。当从DOM中删除/替换该片段时,我希望删除它的JS和CSS。
如果我删除下面示例中的script元素,在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");
}
https://stackoverflow.com/questions/4365062
复制相似问题