删除特定<脚本>标签在<头部>通过onclick事件标记

Remove specific <script> tag in <head> tag by onclick event

本文关键字:lt gt onclick 通过 事件 头部 脚本 删除 标签      更新时间:2023-09-26
<head>
    <script type="text/javascript">
        function include(filename, status){
            if(status == 'on'){
                var head = document.getElementsByTagName('head')[0];
                script = document.createElement('script');
                script.src = filename;
                script.type = "text/javascript";
                head.appendChild(script);
            } else {
               // The code that wipes the script tag above
            }
        }
    </script>
</head>
<body>
    <input type="button" value="OPEN" onclick="include('script.js', 'on')">
    <input type="button" value="CLOSE" onclick="include('', 'off')">
</body>

我想通过onclick事件删除标记中的特定标记。当我点击"关闭"按钮时,ELSE区域应该写什么代码?

最简单的方法是以某种方式维护到创建的元素的链接。例如,您可以将include函数放入闭包中,并有一个私有变量来保存引用:

var include = (function(){
   // the reference to the script
   var theScript;
   return function (filename, status){
     if(status == 'on'){
       // adding a script tag
       var head = document.getElementsByTagName('head')[0];
       theScript= document.createElement('script');
       theScript.src = filename;
       theScript.type = "text/javascript";
       head.appendChild( theScript )
     }else{
       // removing it again
       theScript.parentNode.removeChild( theScript );
     }
   }
})();

一个重要的注意事项是:通过移除<script>标记,您不会从DOM中移除它的任何对象、函数等。因此,在<script>标记中启动的任何操作都将占上风,即使您删除了最初启动它的元素!

您还可以向ScriptElement 添加一个ID

这将为你工作

function include(filename, status){
  if(status == "on"){
     var head = document.getElementsByTagName('head')[0];
     script = document.createElement('script');
     script.src = filename;
     script.type = "text/javascript";
     script.id = "testScriptName";
     head.appendChild(script);
  }else{
    (elem=document.getElementById("testScriptName")).parentNode.removeChild(elem)
  }
}

尝试使用这个:

function include(filename, status){
  var head = document.getElementsByTagName('head')[0];
  if(status == on){
     script = document.createElement('script');
     script.src = filename;
     script.type = text/javascript;
     head.appendChild(script)
  }
  else if(status == 'off'){
     var scripts = head.getElementsByTagName('script');
     if(scripts.length > 0){
        head.removeChild(scripts[0]);
     }
  }
}