Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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
发生cetain事件时从文档中删除javascript文件_Javascript - Fatal编程技术网

发生cetain事件时从文档中删除javascript文件

发生cetain事件时从文档中删除javascript文件,javascript,Javascript,我有这三个脚本文件 <script type="text/javascript" src="script/inbox.js"></script> <script type="text/javascript" src="script/news.js"></script> <script type="text/javascript" src="script/friend.js"></script> 当用户单击某些链接时,我

我有这三个脚本文件

<script type="text/javascript" src="script/inbox.js"></script>
<script type="text/javascript" src="script/news.js"></script>
<script type="text/javascript" src="script/friend.js"></script>

当用户单击某些链接时,我会动态加载这些文件

比如说 当用户单击inbox时,inbox.js将以类似方式加载

所有这些文件inbox.js、news.js、friend.js都有处理滚动事件的代码。 现在,即使用户从收件箱切换到新闻,滚动新闻的处理程序也会被调用。我需要确保当用户位于特定选项卡时,只调用该选项卡的处理程序

一些可以继续解决问题的方向是-

  • 从文档中动态卸载其他脚本文件
  • 取消绑定其他选项卡的滚动处理程序
  • 我知道如何为这些脚本文件分配ID或类并卸载它们
  • 请帮帮我,以下哪种方式更好

    function removejscssfile(filename, filetype){
     var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none"      
     var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none"     
     var allsuspects=document.getElementsByTagName(targetelement)
     for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for     matching elements to remove
        if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
            allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by     calling parentNode.removeChild()
         }
     }
    
    removejscssfile("inbox.js", "js") //remove all occurences of "somescript.js" on page
    
    此函数可用于从文档中动态删除js或css任何类型的脚本。

    加载脚本后,无法“动态卸载”脚本。您可以删除DOM元素(为其分配一个ID并在其父节点上调用
    removeChild
    ),但执行的代码仍在工作,例如,所有创建的变量仍然存在,并且脚本中设置的事件处理程序仍将工作

    如果脚本中只有事件处理,则需要解除所有处理程序与脚本的绑定。否则,您可以考虑在脚本代码中引入一些全局标志,只在标记设置时执行某些功能。