Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript can';无法删除动态添加的脚本_Javascript_Append_Removechild - Fatal编程技术网

Javascript can';无法删除动态添加的脚本

Javascript can';无法删除动态添加的脚本,javascript,append,removechild,Javascript,Append,Removechild,我在一个子元素后面附加了对at-javascript的引用和一个样式表,但我想在不再使用它时再次删除它 var head = document.getElementsByTagName('head')[0]; // We create the style var style = document.createElement('link'); style.setAttribute("rel", "stylesheet");

我在一个子元素后面附加了对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周围搜索,但实际上似乎没有人遇到这种问题,但如果有人知道还有其他问题可以回答,请告诉我..

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

然而:

  • 删除的样式/链接元素将删除其中定义的样式
  • 但是JS不能以这种方式卸载。它们将留在记忆中。如果您有一些逻辑来管理脚本,比如一些依赖关系管理器,那就更好了

因此,删除脚本元素是没有用的。

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

document.getElementsByTagName('head')[0].removeChild(document.getElementsByTagName('head')[0].getElementsByTagName('script')[0]);
然而:

  • 删除的样式/链接元素将删除其中定义的样式
  • 但是JS不能以这种方式卸载。它们将留在记忆中。如果您有一些逻辑来管理脚本,比如一些依赖关系管理器,那就更好了

因此,删除脚本元素是没有用的。

恐怕我们无法删除脚本标记。即使将其删除,脚本也已执行,无法撤消

document.getElementsByTagName('head')[0].removeChild(document.getElementsByTagName('head')[0].getElementsByTagName('script')[0]);
例如:在test.js文件中

window.Test = "aaa";

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

恐怕我们无法删除脚本标记。即使将其删除,脚本也已执行,无法撤消

例如:在test.js文件中

window.Test = "aaa";

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

简言之,您不能,即使您删除了
脚本
标记,这些脚本也在内存中,不存在删除它们的问题

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

但解决这个问题的真正方法是在一个内存中编写脚本,这样一旦程序控件超出其作用域,它们就会从内存中删除


您可能还想深入研究Require.js,简而言之,您不能,即使删除
脚本
标记,这些脚本仍在内存中,无法删除它们

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

但解决这个问题的真正方法是在一个内存中编写脚本,这样一旦程序控件超出其作用域,它们就会从内存中删除



你可能还想深入研究Require.js,为什么要删除它?对你的问题的编辑可能真的是一个新问题。我听说“垃圾收集”很重要。。我想在工作时删除不需要的脚本。。我正在制作一个完全基于内容动态访问的网站,我想防止很多页面刷新。@OlduwanSteve是的。。我又把它删除了。。我一路都没想到through@PhilipJensBramsted:垃圾收集与删除动态添加的脚本是完全不同的概念。在内部,即使使用DOM删除
元素,“垃圾”也不一定会被删除。为什么要删除它?对问题的编辑可能实际上是一个新问题我被告知“垃圾收集”很重要。。我想在工作时删除不需要的脚本。。我正在制作一个完全基于内容动态访问的网站,我想防止很多页面刷新。@OlduwanSteve是的。。我又把它删除了。。我一路都没想到through@PhilipJensBramsted:垃圾收集与删除动态添加的脚本是完全不同的概念。在内部,即使使用DOM删除
元素,“垃圾”也不一定会被删除。。。但我似乎无法选择要删除的元素。。但是是的。。我明白没有必要删除它。。但是有没有办法检查标签是否已经附加了一次?为了防止我的脚本一次又一次地附加同一个脚本?@PhilipJensBramsted保留引用,在你的例子中是
脚本
样式
变量。“但是加载的JS永远不能卸载。”事实上,在某些情况下,你可以将其置零。它由两个不同的函数分开。。我应该如何存储变量?@philipjensbrastd您可以将变量存储在数组中或“跟踪对象”或类或库的实例中。是的,我试过了。。。但我似乎无法选择要删除的元素。。但是是的。。我明白没有必要删除它。。但是有没有办法检查标签是否已经附加了一次?为了防止我的脚本一次又一次地附加同一个脚本?@PhilipJensBramsted保留引用,在你的例子中是
脚本
样式
变量。“但是加载的JS永远不能卸载。”事实上,在某些情况下,你可以将其置零。它由两个不同的函数分开。。我应该如何存储变量?@philipjensbrastd您可以将变量存储在数组中或“跟踪对象”或类或库的实例中。如果有多个脚本呢?通过参数“src”获取它们