我附加了一个带有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,但实际上似乎没有人有这种问题,但如果有人知道有另一个问题回答这个问题,请告诉我..
答案 0 :(得分:4)
简而言之,你不能,即使你删除了scripts
标签,这些脚本都在内存中,也没有删除它们。
一个hack就是编写一个脚本来识别其他脚本正在做什么(添加事件,创建变量,函数等)然后中和它们
但解决此问题的真正方法是在closure中编写脚本,以便在程序控制超出其范围时将其从内存中删除。
您可能还想深入了解Require.js
答案 1 :(得分:3)
您可以使用removeChild
删除元素:
var head = document.getElementsByTagName('head')[0];
//removing them from the head, where you added them
head.removeChild(script);
head.removeChild(style);
然而:
因此removing style/link elements might have some use,但删除脚本元素没有用。
答案 2 :(得分:0)
我担心我们无法删除脚本标记。即使您将其删除,脚本也已执行,无法撤消。
例如:在test.js文件中
window.Test = "aaa";
当我们引用此脚本时,浏览器将下载并自动执行文件中的所有语句。当我们删除脚本标记时,语句已经执行(窗口变量已经具有属性Test)
答案 3 :(得分:-1)
document.getElementsByTagName('head')[0].removeChild(document.getElementsByTagName('head')[0].getElementsByTagName('script')[0]);