2011-07-29 6 views
0

私は問題を抱えていましたが、その解決にはmootoolsの機能が必要でした。だから私はそれを解剖し始めた。 shim機能これで私は理解カント何を今、このmootoolsを解剖する

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

よう IframeShim.destroy そのに興味があるもの。 はParicularly私が理解しようとしていますと、 Request.JSONP.cancel そのコードは、これはそのコードが私ができるこのクリア機能で、今この

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

のようなものです呼び出しclearをキャンセルこの

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

のようですdestroy()を参照してください。私はshim(最上部のコードを参照)に移動して、私は動かなくなります。 これらの機能はすべてmootools-more.js

ヘルプにありますか?誰かがそれがJQuery代替を持っていますRequest.JSONP.cancel のjavascriptの実装プレーンを提供することができれば、それは素晴らしいことだ

答えて

1

Request.JSONP.clearメソッドによって呼び出されている破棄は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は、スクリプトDOMノードがRequest.JSONP.cancelで追加されたかどうかを確認しています。そうであれば、removeChildを介してDOMからスクリプト要素を削除します。

重要なことは、runningフラグをfalseに設定することです。 Request.JSONP.successを見ると、コールバック関数を呼び出す前に最初に行うことは、runningフラグが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リクエストをキャンセルしません。それは、スクリプトがロードされるとコールバックを実行から取り消すことです。 –

関連する問題