卸载用getScript加载的文件吗?

问题描述 投票:7回答:5

使用$ .getScript,我可以即时加载js文件。是否可以“卸载”其中的某些文件?

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

jquery
5个回答
12
投票

“正在卸载”,如果有[[真正可能,在这里就没有多大意义了。让我们退后一步,看看为什么加载所有以以下内容开头的文件:

    它们是另一个HTTP请求和X个字节,如果不需要它们,不要获取它们
  • 它们具有不良影响-您不希望脚本X在这里发生什么
  • 现在从另一侧看,您

    已经

  • 加载了它们,这意味着以上两个都已经已经发生,您支付了获取它们和完成操作的请求成本。同样,他们在页面上的effect不能被一般撤消。仅删除<script>并不会删除它声明的功能,它附加的事件处理程序等。总之,

    为什么

    您要卸载吗?如果要消除影响,那将是不容易的,无论如何也不是通用的。如果要简化页面...在这里没有任何好处,实际上您将只承担删除元素的成本,而对于JavaScript方面的客户端却没有好处。

    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;


    7
    投票
    我认为加载和卸载脚本是有正当理由的。我编写了一个监视工具,该工具始终可以在中心
    内外交换内容。每次加载都需要将新功能附加到刚加载的内容上。如果您(卸载)特定于(卸载)内容的js,则内存占用量将保持较小。您可以在编写通用xhtml的同时,将先前定义的函数名称重新用于稍有不同的响应。

    假定

    包含有关数据安全性的信息。用户希望编辑该特定记录,以便
    内容被具有按钮,复选框等各种行为的表单替换。该表单被替换,并且
    被原始内容替换但反映了更改。表格不见了,因此对任何相关行为的需求也就消失了。

    I.m.h.o。加载到页面

    x.htm + x.css + x.js中的某个

    上,并在需要其他内容和行为时替换它们,相对于分析新内容并附加所有可能的响应,即使新内容中缺少某些节点或类也是如此。 代替了大型的javascript文件,一组可插入的js模块使我的代码井井有条,并且ajax行为的维护相对容易。在jQuery中对这种方案的支持将是巨大的帮助(对我来说)。

    您可以简单地从头部附加和删除js文件:

    $('script').last().remove();`//remove last file from html file $('head').append('<script src=""></script>'); //add js file

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

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

    完成一次,设置myObj = null;

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


    0
    投票
    您可以简单地从头部附加和删除js文件:

    $('script').last().remove();`//remove last file from html file $('head').append('<script src=""></script>'); //add js file


    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,则甚至可以在销毁该对象后再次将其加载。

    © www.soinside.com 2019 - 2024. All rights reserved.