2011-05-07 4 views
2

영어로 죄송합니다. 나는 체스 인터랙티브 사이트를 개발 중입니다. 레슨 메뉴가 있습니다. 사용자가 레슨을 선택하면 $.getScript()을 사용하여로드됩니다. 레슨 파일에는 "큰"json 개체가 포함 된 변수 lesson 만 있습니다. 사용자가 다른 레슨을 선택하면 파일이로드되고 새로운 lesson var가 이전 레슨보다 우선합니다.

좋아, 그 위대한 작품. 하지만 이전에로드 된 파일/s을 처리해야합니까? 그렇다면 어떻게해야합니까? 사용자가 50 개의 레슨을 탐색하면 프로세스가 느려 집니까?

파일로드시 $.getScript() 파일을 넣었을 때 화요일에 <head>을 훑어 봤는데 '노란 불이 깜박 거려요'보이지만 아무것도 표시되지 않습니다.

나는 이것에 관해 당신의 생각을 알고 싶습니다. 미리 감사드립니다.

답변

0

파일을 '처분'하거나 스크립트 태그 등을 삭제하더라도 스크립트가 이미 실행되었으므로 변수가 존재합니다.

또 다른 레슨을 선택하면 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

+0

아, 당신은 var 이름이 동일하다고 말하지 않았습니다. 그렇다면 아무 것도 할 필요가 없습니다. 한 번에 1 개만 존재합니다. –

+0

예, 모든 파일에는'var lesson = {...};'만 포함됩니다. 나는 수십 개의 레슨을로드하는 빠른 테스트를 수행했으며 브라우저 메모리 사용량은 변하지 않는 것으로 보입니다. – morgar

1

$.getScript은 실제로 파일을로드하지 않고 (스크립트 태그로 헤드에 추가) 스크립트 .js 파일을 다운로드하고 즉시 실행합니다. 물론 스크립트를 끝내면 스크립트를 끝내는 일종의 종료 함수를 포함 할 수 있습니다.

+1

다른 메모와 마찬가지로, "메모리에있는"var/s 객체는 문제가되지 않습니다. 왜냐하면 그것은 단지 하나뿐이기 때문에 항상 새로운 수업으로 덮어 쓰기 때문입니다. 그러나 전체 파일이 어딘가에, 페이지 또는 브라우저 메모리에 저장되는지는 알 수 없습니다. – morgar