如何从HTML中卸载javascript?

前端之家收集整理的这篇文章主要介绍了如何从HTML中卸载javascript?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从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");
}

解决方法

这是无法做到的.

执行脚本时,将功能定义添加到全局窗口对象.函数附带的调试符号可能指示函数来自哪里,但是这些信息对于脚本是不可用的.

关于唯一的方式,您可以实现这样的事情将是在脚本中创建一个伪命名空间,然后在完成它时丢弃整个命名空间.但是,这个问题提示我,你正在尝试做错事.也许详细说明您的情况将有助于我们提供替代解决方案.

猜你在找的HTML相关文章