【问题标题】:A way of disposing scripts files previously loaded with $.getScript()一种处理以前用 $.getScript() 加载的脚本文件的方法
【发布时间】:2011-05-07 02:04:36
【问题描述】:

对不起我的英语。我正在开发一个国际象棋互动网站。有一个课程菜单,当用户选择课程时,它使用$.getScript() 加载。课程文件只有一个变量lesson,其中包含一个“大”json 对象。当用户选择另一课时,文件被加载并且新的lesson var 覆盖之前的。

好的,效果很好。但是,我是否应该处理以前加载的文件,如果应该,我该怎么做?如果用户浏览了 50 节课,会减慢这个过程吗?

我在加载文件时查看了 firebug,<head>,据说是$.getScript() 放置了文件,它发出“黄色闪光”,但没有添加任何可见的内容。

我想知道您对此的看法。提前致谢。

【问题讨论】:

    标签: jquery getscript


    【解决方案1】:

    $.getScript 实际上并没有加载文件(即将它作为脚本标签附加到头部),而是下载脚本 .js 文件并立即运行它。当然,您可以在脚本中包含某种终止函数,当您完成使用它时会自行清除。

    【讨论】:

    • 就像我的其他评论一样,“内存中”的对象 var/s 不是问题,因为它只是一个并且总是被新课程覆盖。但我不知道整个文件是否存储在某个地方,页面或浏览器内存中。
    【解决方案2】:

    即使您“处理”文件,或删除脚本标记或其他任何内容,您的脚本已经被执行,因此,您的变量存在。

    唯一的方法是在您选择其他课程时将您的 json 对象设置为 null

    例如,如果您在lesson1.js 文件中有以下 json:

    var lesson1data = { 
      ...Big json comes here...
    };
    

    在您的主页/脚本中,您应该有:

    function selectLesson(lessonNumber){
       lesson1data = null; //This 'cleans' the loaded data
       lesson2data = null; //This 'cleans' the loaded data
       ...
       $.getScript(...); //Load json data for selected lesson
    }
    

    希望这会有所帮助。干杯

    【讨论】:

    • “内存”中的json对象var没有问题,因为它总是被新的覆盖。
    • 啊,你没说变量名是一样的。如果是这样,您无需执行任何操作,一次只有 1 个
    • 是的,所有文件仅包含:var lesson = { ... };。我做了一个快速测试,加载了几十节课,浏览器内存使用似乎没有改变。
    • 所以您不必担心。即使不删除脚本标签,它们也将是相当大的开销。最好的问候。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多