2011-05-07 39 views
2

對不起我的英語。我正在開發一個國際象棋互動網站。有一個課程菜單,當用戶選擇課程時,它使用$.getScript()加載。課程文件只有一個包含「大」json對象的變量lesson。當用戶選擇另一課時,文件將被加載,並且新的lesson var將覆蓋前一個。

好吧,這偉大工程。但是,我應該處理先前加載的文件,如果我應該這樣做,我該怎麼做?如果用戶導航五十次課程會怎樣,這會減慢進程嗎?

我在加載文件時看了一眼螢火蟲,<head>,據說$.getScript()放置該文件,並且它做了一個'黃色閃光',但沒有任何可見的添加。

我想知道你對這個想法。提前致謝。

回答

0

即使你「處理」文件,或刪除腳本標記或什麼的,你的腳本已經被exeuted,因此,存在的變量。

的唯一辦法是,當你選擇其他課程設置爲null您的JSON對象。

例如,如果你在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 
} 

希望這有助於。乾杯

+0

「內存」中的json對象var不是問題,因爲它總是被新的覆蓋。 – morgar 2011-05-07 02:17:51

+0

啊,你沒有說var的名字是一樣的。如果是這樣,你不必做任何事,一次只會有1個。 – 2011-05-07 02:20:12

+0

是的,所有文件只包含:'var lesson = {...};'。我做了一個快速測試,加載了幾十次課,瀏覽器內存使用情況似乎沒有改變。 – morgar 2011-05-07 02:28:32

1

$.getScript實際上不會加載該文件(即其附加到頭部的腳本標籤),但下載腳本.js文件並立即運行它。當然,你可以在你的腳本中包含某種終止函數,當你完成使用時,它會自動清除。

+1

與我的其他評論一樣,對象var/s「在內存中」不是問題,因爲它只有一個,並且總是被新課程所覆蓋。但我不知道整個文件是否存儲在頁面或瀏覽器內存中的某處。 – morgar 2011-05-07 02:21:18

相關問題