2011-07-29 5 views
0

mootools에 내장 된 기능이 필요한 문제와 해결 방법이 있습니다. 그래서 나는 그것을 해부하기 시작했다. shim 기능이있는 내가 이해하지 못할 지금의이mootools 해부

destroy: function(){ 
     if (this.shim) this.shim.destroy(); 
     return this; 
    } 

같은 IframeShim.destroy 의에 관심있는 오전이 무엇인지. 는 Paricularly 내가 이해하려고 노력하고 있어요 지금이 전화를 clear 그 코드 내가 할 수있는이 클리어 기능에 지금이

clear: function(){ 
     this.running = false; 
     if (this.script){ 
      this.script.destroy(); 
      this.script = null; 
     } 
     return this; 
    } 

같다 취소의 코드는 다음과

cancel: function(){ 
     if (this.running) this.clear().fireEvent('cancel'); 
     return this; 
    } 

처럼 Request.JSONP.cancel 입니다 destroy()을보고 어느 날 shim (맨 위의 코드 참조)이 걸리고 im이 붙어 있습니다. 이 모든 기능은 mootools-more.js

도움말에 있습니다. 누군가가 그것이 JQuery 대안이 있습니까 Request.JSONP.cancel 의 자바 스크립트 구현 평범한를 제공 할 수 있다면 좋을 것

?

답변

1

Request.JSONP.clear 메서드에 의해 호출 된 destroy는 IframeShim.destory이 아니며 mootools 코어의 일부입니다. 여기에 소스는 다음과 같습니다 모든 것을 Element.dispose가하는

destroy: function(){ 
    var children = clean(this).getElementsByTagName('*'); 
    Array.each(children, clean); 
    Element.dispose(this); 
    return null; 
}, 

는 DOM에서 요소를 삭제 네이티브 jasvascript의 DOM 방법 Node.removeChild를 호출합니다.

JSONP.cancel이 수행하는 모든 작업은 Request.JSONP.cancel을 통해 스크립트 DOM 노드가 추가되었는지 확인하는 것입니다. 만약 그렇다면, removeChild를 통해 DOM으로부터 script 요소를 제거한다.

중요한 것은 running 플래그를 false로 설정한다는 것입니다. Request.JSONP.success을 보면 콜백 함수를 호출하기 전에 먼저 running 플래그가 false로 설정되어 있는지 확인하고, false이면 false를 반환합니다. 이것은 효과적으로 실행을 "취소"합니다.

HTTP 요청을 취소한다는 의미 인 경우 대답은 '아니요'입니다.

+0

감사합니다. 노드에서'destroy()'를 호출하면 노드가 만든 모든 http 요청이 취소됩니다. 무엇을 의미하는지 이해하지 못합니다. [this] (http://stackoverflow.com/questions/6865574/how-to-cancel) -http-request-using-javascript) – lovesh

+0

그것은'Request.JSONP.cancel'가 HTTP 요청을 취소 할 수 없다는 것을 의미합니까? – lovesh

+0

@lovesh 아니요 HTTP 요청을 취소하지 않습니다. 스크립트가로드되면 콜백을 취소합니다. –