从HTML页面动态删除脚本文件

4

我开发了一个网站,通过调用以下load函数,在主页上导航到不同的html页面:

$("#content").load('page.html', function (response, status) {});

page.html包含一些脚本文件,这些文件也在主页中加载。我想要做的是当我浏览不同的页面时动态地移除脚本文件。

$("#content").load('another_page.html', function (response, status) {
   if (status = "success") {
      //Remove script file in page.html
   }
});

我应用了谷歌发现的以下步骤。
function removejscssfile(filename, filetype) {
   var targetelement = (filetype == "js") ? "script" : (filetype == "css") ? "link" : "none" //determine element type to create nodelist from
   var targetattr = (filetype == "js") ? "src" : (filetype == "css") ? "href" : "none" //determine corresponding attribute to test for
   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()
   }
}

但是脚本文件仍然存在。

2
一旦一个js文件被加载并运行,我认为它不仅仅是简单地删除脚本标签那么简单。你必须确保它创建的所有函数和变量都是“未定义”的。 - evolutionxbox
即使您从DOM中删除脚本节点,该脚本仍将存在于JS运行时环境中。 - EJTH
请查看这篇文章:https://dev59.com/1VnUa4cB1Zd3GeqPZlzD - Jonathan Smith
1个回答

1

删除脚本标签或移除JS文件标签不会丢弃JS。它仍然被加载。因此,您还需要告诉它擦除此代码。

一种可能的方法是将您的Javascript文件封装到一个函数中,然后重新定义此函数。例如:

function foo(){
    //Your javascript here
}

然后:
foo= function(){};

但是如果你的函数包含事件,你仍然需要手动解绑它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接