卸载用getScript加载的文件?

时间:2011-01-12 13:00:50

标签: jquery

使用$ .getScript我可以动态加载js文件。是否可以“卸载”其中一些文件?

我有一个基于ajax的管理面板。我有3个部分。单击每个部分时,我只想加载与之关联的文件。当切换到另一个部分时,我想卸载不必要的文件。

5 个答案:

答案 0 :(得分:11)

“卸载”,如果真的可能,那么这里没有多大意义。让我们退一步看看为什么你加载所有文件开头:

  • 他们是另一个HTTP请求和X字节,如果你不需要它们,就不要得到它们
  • 他们有不受欢迎的影响 - 你不希望脚本X在这里发生什么

现在从另一边看,你已经加载了它们,这意味着上面的两个都已经已经发生了,你支付了获取它们的请求成本和他们做了什么。此外,他们在页面上的效果不能一般地撤消。只需删除<script>,就不会删除它声明的函数,它附加的事件处理程序等等。

简而言之,为什么你想要卸载?如果是为了消除这些影响,那么一个人不容易,不管怎么说都不是通用的。如果它是为了减轻页面...这里没有任何好处,你实际上只会产生删除元素的成本,而在JavaScript方面对客户端没有任何好处。

答案 1 :(得分:8)

正如Nick Craver指出的那样,很难理解你为什么要这样做的原因。

但是,如果有正当理由这样做。我会把所有加载脚本的代码放在一个类中。当我想卸载它时,我只是将它分配给null。例如

//external file:
o1=new Object();
o1.function1=function(){
     //blah blah blah
   };
o1.function2=function(){
     //blah blah blah
   };
o1.var1=1;

//and if when i'll need to get rid of all of this i can just
o1=null;

答案 2 :(得分:7)

我认为有正当理由加载和卸载脚本。我编写了一个监控工具,其中内容交换进出中心&lt; div&gt;每时每刻。每个加载都需要将新函数附加到刚刚加载的内容上。如果您(un)加载特定于(未加载)内容的js,则内存占用量保持很小。并且您可以在编写通用xhtml时重复使用先前定义的函数名称以获得稍微不同的响应。

假设&lt; div&gt;有关数据和平的信息。用户想要编辑该特定记录,以便&lt; div&gt;内容被替换为在按钮,复选框等上具有各种行为的表单。表单被子目录并且&lt; div&gt;被原始内容替换但反映了变化。表格已经消失,因此需要任何相关的行为。

I.m.h.o。加载某个&lt; div&gt;在您的网页 x.htm + x.css + x.js 上,并在需要其他内容和行为时将其替换为目前为止优先考虑即使新内容中缺少某些节点或类,也要重新分析新内容并附加所有可能的响应。

而不是大型javascript文件,一组可插入的js模块使我的代码组织良好,并且ajax行为的维护相对容易。在jQuery中支持这样的方案对我来说是一个巨大的帮助。

答案 3 :(得分:0)

您只需从head:

添加和删除js文件即可
$('script').last().remove();`//remove last file from html file
$('head').append('<script src=""></script>'); //add js file 

答案 4 :(得分:0)

在这种情况下,我要做的就是使所有JavaScript代码成为对象结构的一部分,然后在完成处理后将对象设置为null。

var myObj = {
    "property1": true,
    "property2": "Hello my name is Sam.",
    "mynamedfunction": function(){
       //do stuff
    },
    "othernamedfunction": function(){
       //do other stuff
    }
};

完成一次,设置myObj = null;

因此,不是加载和卸载文件,而是根据需要加载和卸载对象!因此,您将加载包含对象的文件,但是一旦完成处理后将其设置为null,则甚至可以在销毁该对象后再次将其加载。