2011-08-03 3 views
0

AJAX로드를 통해 주 콘텐츠가 자주 변경되는 장고 앱이 있습니다. 새로로드 된 컨텐츠에서 많은 javascript를 실행해야하기 때문에로드 된 HTML 템플리트의 끝에 여러 document.ready 및 기타 기능이있는 javascript 블록이 포함됩니다.AJAX Django 앱에 자바 스크립트를 삽입하는 방법은 무엇입니까?

AJAX 로딩 된 콘텐츠에 자바 스크립트를로드하는 적절한 방법입니까? 콘텐츠 블록을 새로운 (AJAX가로드 된) HTML + 스크립트로 대체하면 기존 스크립트가 깨끗하게 제거됩니까?

자바 스크립트/메모리 사용을 감지하는 모니터링 도구가 있습니까? 일부 페이지 누수가 발생하여 누출이 발생하고있는 것으로 의심됩니다.

감사합니다.

답변

0

당신은 확실히 .live()를 사용하기보다는로드 된 HTML 내용에서 새로운 자바 스크립트 블록을 포함하여 조사한다 : 워드 프로세서

http://api.jquery.com/live/

을 :

.live() 메소드는 할 수있다 이벤트 위임을 사용하여 아직 DOM에 이 추가되지 않은 요소에 영향을줍니다. 조종자 요소에 바운드 된 처리기가 트리거되는 이벤트를 담당합니다. 그 자손에 에.

+0

나는 이미 .live()를 광범위하게 사용합니다. 새 콘텐츠가로드 될 때 (예 : document.ready) – sxv

+0

흠 ... 콘텐츠를로드하는 스크립트의 성공 함수의 일부로 해당 스크립트를 실행할 수 없습니까? –

+0

성공 함수는 모든 데이터가 완전히로드되거나 데이터가 반환 될 때까지 기다릴 것입니까? – sxv

0

IMHO AJAX 로딩 페이지 요소에 자바 스크립트 코드를 삽입하지 마십시오. 그렇게하는 것이 그가 최선의 방법은 아닙니다. AJAX로드가 끝난 후에 왜 자바 스크립트 기능을 만들고 활성화하지 못합니까?

function voteClick(self, pk, multiplier, url){ 
    //some actions function makes 
    //for e.g. making POST or changing DOM 
    // you can use vars that are generated by django template system 

    return false; 
}; 

의 jQuery 방법 :

$.post(url, { param1: value1, param2: value2 }, function(data){ 
     //some function actions upon your AJAX complete 
     //call your function with code here 
     // you can load some 'data' for this script from django 
     // and not the whole script 
     voteClick(self, value1, value2, data); 
     return false; 
    } //end function 
);//end POST 
스크립트에서 다음

<a class="orange" 
    onclick="return voteClick(this, '{{ item.pk }}', '1', '{% url ajaxvote %}')" 
    href=''>Button text</a> 

과 : 또는 ... 클릭 또는 마우스 오버 이벤트에

자바 스크립트 온 클릭을 넣어

ou에서 자세한 내용을 확인할 수 있습니다 : jQuery POST

여기서 주요 아이디어는 MEDIA_ROOT에서 정적 콘텐츠로 스크립트를로드하고 필요한 매개 변수를 전달해야한다는 것입니다. live() 함수를 사용하여 스크립트를로드하는 것은 어렵습니다. 함수와 매개 변수를 추적하는 일을 처리해야합니다.

물론 jQuery를 사용하는 경우 선택기로 코드 이벤트를 추적하기 쉽습니다. 하지만 다시 ... 왜 AJAX 요청으로 코드를로드해야합니까? 스크립트 파일로 여기에 사용되는 것은 확실히 정적 파일입니다 ...

관련 문제