* <dt>useFireWall<dd>異なるドメインに jsonp を読み込んだ後、xdomain iframe 通信を使ってデータを受け取る。不正なコードの実行を防ぐことが出来る、未実装\r
* </dl>\r
* \r
+ * <h4>Form 用プロパティ</h4>\r
+ * <dl>\r
+ * <dt>params<dd>url パラメータを object で渡すことが出来る。\r
+ * <dt>method<dd>'GET' or 'POST'\r
+ * <dt>target<dd>'_self', '_parent', '_top' の場合、ページから離脱する。target を指定せず同一ドメインの場合 response に body.innerHTML が返る。\r
+ * </dl>\r
+ * \r
* @alias X.Net\r
* @class 各種ネットワーク機能をラップしインターフェイスを共通化する。\r
* @constructs Net\r
* var net = X.Net( { jsonp : urlString, params : params, callbackName : callbackName, charset : charset, useFireWall : false } );\r
* \r
* // Form\r
- * var net = X.Net( { form : urlString, method : 'POST', target : '_self', params : {} } ); // _self, _parent, _top の場合、ページから離脱する\r
+ * var net = X.Net( { form : urlString, method : 'POST', target : '_self', params : {} } );\r
* \r
* // Image preload & getSize\r
* var net = X.Net( { image : src, sizeDetection : true } );\r
*/\r
'busy' : function(){\r
return this === X_NET_currentQueue && X_NET_currentWrapper._busy;\r
+ },\r
+\r
+ /**\r
+ * 現在の状態。1:待機中 2:通信中 3:通信完了フェーズ\r
+ * @alias Net.prototype.state\r
+ */\r
+ 'state' : function(){\r
+ return this === X_NET_currentQueue ?\r
+ ( X_NET_completePhase ? 3 : 2 ) :\r
+ 0 <= X_NET_QUEUE_LIST.indexOf( this ) ? 1 : 0;\r
}\r
}\r
);\r
( 200 <= status && status < 400 ) ||\r
//status === 304 ||\r
( status === 1223 && ( status = 204 ) ) ||\r
- ( X_UA[ 'Webkit' ] && status === undefined && ( status = 200 ) ) // safari: /webkit/.test(userAgent)\r
+ ( X_UA[ 'Webkit' ] && status === undefined ) // safari: /webkit/.test(userAgent)\r
){\r
/*\r
* opera8, safari2, khtml3 で utf8 日本語文字列の文字化け\r
*/\r
- // raw.getAllResponseHeaders();\r
\r
// parse json, html, xml, text, script, css\r
switch( X_NET_XHRWrapper._dataType ){\r
break;\r
};\r
\r
- X_NET_XHRWrapper[ 'asyncDispatch' ]( 32, { type : X_EVENT_SUCCESS, status : status || 200, response : data, headers : headers || null } );\r
+ X_NET_XHRWrapper[ 'asyncDispatch' ]( 32, { type : X_EVENT_SUCCESS, status : status || 200, response : data, 'headers' : headers || null } );\r
} else {\r
- X_NET_XHRWrapper[ 'asyncDispatch' ]( 32, { type : X_EVENT_ERROR, status : raw.status || 0, 'percent' : 100, headers : headers || null } );\r
+ X_NET_XHRWrapper[ 'asyncDispatch' ]( 32, { type : X_EVENT_ERROR, status : status || 400, 'headers' : headers || null } );\r
};\r
break;\r
\r
\r
X_NET_GIMRWrapper._busy = false;\r
\r
- X_NET_GIMRWrapper\r
- [ 'asyncDispatch' ]( e = {\r
- type : error || ret[ 'rc' ] < 200 || 400 < ret[ 'rc' ] ? X_EVENT_ERROR : X_EVENT_SUCCESS,\r
- status : ret[ 'rc' ] || ( error ? ret[ 'code' ] || 400 : 200 ),\r
- response : data,\r
- 'headers' : ret[ 'headers' ],\r
+ if( error || ret[ 'rc' ] < 200 || 400 < ret[ 'rc' ] ){\r
+ e = {\r
+ type : X_EVENT_ERROR,\r
+ status : ret[ 'rc' ] || ret[ 'code' ] || 400,\r
'message' : error && ret[ 'errors' ].join( '\n' )\r
- });\r
+ };\r
+ } else {\r
+ e = {\r
+ type : X_EVENT_SUCCESS,\r
+ status : ret[ 'rc' ] || 200,\r
+ response : data\r
+ };\r
+ };\r
\r
- console.dir( e );\r
- \r
+ e[ 'headers' ] = ret[ 'headers' ];\r
+ \r
+ X_NET_GIMRWrapper[ 'asyncDispatch' ]( e);\r
+ \r
+ //console.dir( e );\r
+\r
X_NET_GIMR_timerID = X_NET_GIMR_phase = 0;\r
X_NET_GIMR_lastHashString = ''; \r
iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_';\r
\r
if( X[ 'Pulgin' ][ 'SilverlightEnabled' ] ){\r
\r
+ X_TEMP.slaudioInit = function(){\r
+ //\r
+ // http://blog.yuhiisk.com/archive/2014/12/20/dynamic-loading-and-complete-processing-of-script.html\r
+ var s = document.createElement( '<script id="silverlightaudio" type="text/xaml"></script>' );\r
+ \r
+ document.getElementsByTagName( 'head' )[ 0 ].appendChild( s );\r
+ s.text = '<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"></Canvas>';\r
+ \r
+ delete X_TEMP.slaudioInit;\r
+ };\r
+ \r
// X.Node.inherits はできない。_rawObject は <object> でなく silverlight\r
X_Audio_SLAudioWrapper = X_Audio_AbstractAudioBackend[ 'inherits' ](\r
- 'X.AV.SilverlightAudioWrapper',\r
+ 'X.AV.SilverlightAudio',\r
X_Class.POOL_OBJECT,\r
{\r
'_rawType' : X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT,\r
_interval : 0, // setInterval timer id\r
\r
Constructor : function( target, source, option ){\r
- var xnodeScript;\r
+ !X_Audio_SLAudio_uid && X_TEMP.slaudioInit();\r
\r
- if( !X_Audio_SLAudio_uid ){\r
- // source\r
- //xnodeScript = X_Node_head[ 'create' ]( 'script', { type : 'text/xaml', id : 'silverlightaudio' } );\r
- //xnodeScript[ '_rawObject' ].innerHTML = '<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"></Canvas>';\r
- \r
- // html に以下を書いた \r
- // <script id="silverlightaudio" type="text/xaml"><Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"></Canvas></script>\r
- };\r
/*\r
* [Silverlight 2]JavaScriptコードからSilverlightのオブジェクトを利用するには?[C#、VB]\r
* http://www.atmarkit.co.jp/fdotnet/dotnettips/902slobjcallfromjs/slobjcallfromjs.html\r