Javascript can';无法删除动态添加的脚本
我在一个子元素后面附加了对at-javascript的引用和一个样式表,但我想在不再使用它时再次删除它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");
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”获取它们