X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F06_net%2F03_XNetForm.js;h=cdbcb4ffe021b2ee5c245f4c12d8e66d374f1e31;hb=HEAD;hp=71f65cc642f52a7c79948d88d4a94ac29a5c307a;hpb=2612dc17dae6ba790807049d2587e8a2910007cc;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/06_net/03_XNetForm.js b/0.6.x/js/06_net/03_XNetForm.js index 71f65cc..cdbcb4f 100644 --- a/0.6.x/js/06_net/03_XNetForm.js +++ b/0.6.x/js/06_net/03_XNetForm.js @@ -1,106 +1,111 @@ //{+netform"
によるGETとPOST"(動的に生成したフォームによるGETとPOST。)[+net,+ninjaiframe] -X[ 'Net' ][ 'Form' ] = { - // 隠し iframe 使用の可否 -}; - -var X_NET_Form_errorTimerID, X_Net_Form_onloadCount = 0; +var X_FormSender_errorTimerID, + X_FormSender_isLeave, X_FormSender_isSameDomain, + X_FormSender_onloadCount = 0; -X_TEMP.X_NET_Form_init = function(){ - X_NET_FormWrapper = X_Class_override( X[ 'Util' ][ 'NinjaIframe' ](), X_TEMP.X_NET_Form_params ); +X_TEMP.X_FormSender_init = function(){ + X_FormSender = X_Class_override( X_NinjaIframe(), X_TEMP.X_FormSender_params ); - delete X_TEMP.X_NET_Form_init; - delete X_TEMP.X_NET_Form_params; + delete X_TEMP.X_FormSender_init; + delete X_TEMP.X_FormSender_params; - return X_NET_FormWrapper; + return X_FormSender; }; /* - * form 構築時に ">' ); - - X_NET_FormWrapper + + X_FormSender [ 'refresh' ]( html.join( '' ) ) - [ 'listen' ]( [ 'ninjaload', 'ninjaerror' ], X_NET_Form_iframeListener ); - - X_NET_FormWrapper._busy = true; + [ 'listen' ]( [ 'ninjaload', 'ninjaerror' ], X_FormSender_iframeListener ); + + if( 0 < timeout ){ + X_FormSender_errorTimerID = X_FormSender[ 'asyncDispatch' ]( timeout, { type : X_EVENT_ERROR, 'timeout' : true } ); + }; + + X_FormSender._busy = true; }, cancel : function(){ - X_NET_FormWrapper.reset(); - X_NET_FormWrapper._canceled = true; + X_FormSender.reset(); + X_FormSender._canceled = true; }, reset : function(){ - X_NET_FormWrapper._busy = X_NET_FormWrapper._canceled = false; - X_NET_FormWrapper[ 'unlisten' ]( [ 'ninjaload', 'ninjaerror' ], X_NET_Form_iframeListener ); - X_NET_FormWrapper[ 'refresh' ]( '' ); - X_NET_Form_errorTimerID && X_Timer_remove( X_NET_Form_errorTimerID ); - X_NET_Form_errorTimerID = X_Net_Form_onloadCount = 0; + X_FormSender._busy = X_FormSender._canceled = false; + X_FormSender + [ 'unlisten' ]( [ 'ninjaload', 'ninjaerror' ], X_FormSender_iframeListener ) + [ 'refresh' ]( '' ); + X_FormSender_errorTimerID && X_Timer_remove( X_FormSender_errorTimerID ); + X_FormSender_errorTimerID = X_FormSender_onloadCount = 0; } }; -function X_NET_Form_iframeListener( e ){ +function X_FormSender_iframeListener( e ){ var idoc; switch( e.type ){ case 'ninjaload' : - if( this.isJump ){ + if( X_FormSender_isLeave ){ return; }; - if( ++X_Net_Form_onloadCount === 1 ){ - X_NET_Form_errorTimerID = X_NET_FormWrapper[ 'asyncDispatch' ]( this.timeout, X_EVENT_ERROR ); - - // TODO レスポンスの html にアクセスしたい場合 - // TODO samedomain or xiframe-sender - - idoc = this[ '_rawObject' ].contentDocument || this._iwin.document, - - X_NET_FormWrapper[ 'asyncDispatch' ]( { type : X_EVENT_SUCCESS, response : idoc && idoc.body ? idoc.body.innerHTML : '' } ); + if( ++X_FormSender_onloadCount === 1 ){ + if( X_FormSender_isSameDomain ){ + idoc = this[ '_rawObject' ].contentDocument || this._iwin.document; + X_FormSender[ 'asyncDispatch' ]( { type : X_EVENT_SUCCESS, response : idoc && idoc.body ? idoc.body.innerHTML : '' } ); + } else { + X_FormSender[ 'asyncDispatch' ]( { type : X_EVENT_SUCCESS } ); + }; }; break; case 'ninjaerror' : console.log( 'iframe onerror' ); - X_NET_FormWrapper[ 'asyncDispatch' ]( X_EVENT_ERROR ); + X_FormSender[ 'asyncDispatch' ]( X_EVENT_ERROR ); break; }; - return X_Callback_UN_LISTEN; + return X_CALLBACK_UN_LISTEN; }; //}+netform \ No newline at end of file