发生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都有处理滚动事件的代码。
现在,即使用户从收件箱切换到新闻,滚动新闻的处理程序也会被调用。我需要确保当用户位于特定选项卡时,只调用该选项卡的处理程序
一些可以继续解决问题的方向是-
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
),但执行的代码仍在工作,例如,所有创建的变量仍然存在,并且脚本中设置的事件处理程序仍将工作
如果脚本中只有事件处理,则需要解除所有处理程序与脚本的绑定。否则,您可以考虑在脚本代码中引入一些全局标志,只在标记设置时执行某些功能。