2

我正在附加一个引用 at javascript 和样式表的子元素,但是当不再使用它时,我想再次删除它。

        var head = document.getElementsByTagName('head')[0];

        // We create the style
        var style = document.createElement('link');
        style.setAttribute("rel", "stylesheet");
        style.setAttribute("type", "text/css");
        style.setAttribute("href", '_css/style.'+app+'.css');

        var script = document.createElement('script');
        script.setAttribute("type", "text/javascript");
        script.setAttribute("src", '_scripts/_js/script.'+app+'.js');

        // And the append the style
        head.appendChild(style);
        head.appendChild(script);

这就是我附加脚本的方式,它工作得很好。但我不知道如何从 HTML 的 head 标签中再次删除标签。

有谁知道如何再次从标题标签中删除标签.. 我一直在 Stackoverflow 周围搜索,但实际上似乎没有人遇到这种问题,但如果有人知道还有另一个问题在回答这个问题,请告诉我..

4

4 回答 4

5

简而言之,不能,即使您删除了scripts标签,那些脚本也在内存中并且没有删除它们。

一种技巧是编写一个脚本来识别其他脚本正在做什么(添加事件、创建变量、函数等),然后中和它们

但是解决这个问题的真正方法是在一个闭包中编写你的脚本,这样一旦程序控制超出了它们的范围,它们就会从内存中删除。

您可能还想深入研究 Require.js

于 2013-04-13T10:42:29.787 回答
3

您可以使用以下方法删除元素removeChild

var head = document.getElementsByTagName('head')[0];

//removing them from the head, where you added them
head.removeChild(script);
head.removeChild(style);

然而:

  • 移除的样式/链接元素将移除其中定义的样式。
  • 但是JS不能这样卸载。它们将留在记忆中。如果你有一些逻辑来管理你的脚本会更好,比如一些依赖管理器。

因此删除样式/链接元素可能有一些用处,但删除脚本元素没有用。

于 2013-04-13T10:34:53.213 回答
0
document.getElementsByTagName('head')[0].removeChild(document.getElementsByTagName('head')[0].getElementsByTagName('script')[0]);
于 2013-04-13T10:36:25.337 回答
0

恐怕我们无法删除脚本标签。即使您删除它,该脚本已经执行并且无法撤消。

例如:在 test.js 文件中

window.Test = "aaa";

当我们引用这个脚本时,浏览器会下载并自动执行文件中的所有语句。当我们删除脚本标签时,语句已经执行(窗口变量已经具有属性测试)

于 2013-04-13T10:39:00.307 回答