// TODO onlineevent offlineevent, netspeed\r
X.Net = {\r
\r
- get : function( url ){\r
- return new X_NET_Queue( X_NET_TYPE_XHR, { get : url } );\r
+ xhrGet : function( url ){\r
+ return new X_NET_Queue( X_NET_TYPE_XHR, { type : 'get', get : url } );\r
},\r
\r
- post : function( url ){\r
- return new X_NET_Queue( X_NET_TYPE_XHR, { post : url } );\r
+ xhrPost : function( url ){\r
+ return new X_NET_Queue( X_NET_TYPE_XHR, { type : 'post', post : url } );\r
+ },\r
+ \r
+ formGet : function(){\r
+ \r
+ },\r
+ \r
+ formPost : function(){\r
+ \r
},\r
\r
// TODO chashe\r
jsonp : function( url ){\r
return new X_NET_Queue( X_NET_TYPE_JSONP, url );\r
+ },\r
+ \r
+ image : function(){\r
+ \r
}\r
\r
};\r
\r
+\r
+var X_NET_IWrapper = function(){};\r
+ X_NET_IWrapper.prototype.load = function(){};\r
+ X_NET_IWrapper.prototype.cancel = function(){};\r
+ X_NET_IWrapper.prototype.reset = function(){};\r
+\r
+\r
var X_NET_TYPE_XHR = 1,\r
X_NET_TYPE_JSONP = 2,\r
X_NET_TYPE_FORM = 3,\r
this.type = type;\r
this.data = data; \r
\r
+ this.listen( X.Event.COMPLETE, this, X_NET_proxyDispatch );\r
+ \r
X_NET_QUEUE_LIST[ X_NET_QUEUE_LIST.length ] = this;\r
!X_NET_currentQueue && X_NET_shiftQueue();\r
},\r
\r
+ busy : function(){\r
+ return this === X_NET_currentQueue && X_NET_currentWrapper._busy;\r
+ },\r
+ \r
cancel : function(){\r
var i = X_NET_QUEUE_LIST.indexOf( this );\r
if( i !== -1 ){\r
X_NET_QUEUE_LIST.splice( i, 1 );\r
+ this.asyncDispatch( 0, { type : X.Event.COMPLETE } );\r
} else\r
if( this === X_NET_currentQueue ){\r
X_NET_currentWrapper.cancel();\r
\r
function X_NET_proxyDispatch( e ){\r
switch( e.type ){\r
+ case X.Event.BEFORE_KILL_INSTANCE :\r
+ break;\r
+ case X.Event.KILL_INSTANCE :\r
+ break; \r
+ case X.Event.KILL_INSTANCE_CANCELED :\r
+ break;\r
+ case X.Event.PROGRESS :\r
+ console.log( 'q: ' + e.type );\r
+ this.dispatch( e );\r
+ break;\r
case X.Event.SUCCESS :\r
case X.Event.ERROR :\r
- this.asyncDispatch( 0, e );\r
- //this.kill();\r
+ console.log( 'q: ' + e.type );\r
+ this.dispatch( e );\r
+ this.asyncDispatch( 0, { type : X.Event.COMPLETE } );\r
+ break;\r
+ case X.Event.CANCELED :\r
+ \r
+ break;\r
+ case X.Event.COMPLETE :\r
+ this.kill();\r
X_NET_shiftQueue();\r
break;\r
- case X.Event.PROGRESS :\r
- this.dispatch( 0, e );\r
};\r
};\r
\r
if( X_NET_currentQueue ){\r
if( X_NET_currentWrapper._busy ) return;\r
X_NET_currentWrapper.unlisten( [ X.Event.SUCCESS, X.Event.ERROR, X.Event.PROGRESS ], X_NET_currentQueue, X_NET_proxyDispatch );\r
+ X_NET_currentQueue.reset();\r
};\r
\r
if( !X_NET_QUEUE_LIST.length ){\r
break;\r
};\r
\r
- X_NET_currentWrapper.listen( [ X.Event.SUCCESS, X.Event.ERROR, X.Event.PROGRESS ], X_NET_currentQueue = queue, X_NET_proxyDispatch );\r
+ X_NET_currentWrapper.listen( [ X.Event.SUCCESS, X.Event.ERROR, X.Event.PROGRESS, X.Event.COMPLETE ], X_NET_currentQueue = queue, X_NET_proxyDispatch );\r
\r
X_NET_currentWrapper.load( queue.data );\r
};\r
\r
var X_Net_XHR_W3C = window[ 'XMLHttpRequest' ] && new XMLHttpRequest(),\r
X_Net_XHR_X_DOMAIN = window[ 'XDomainRequest' ] && new XDomainRequest(),\r
- X_Net_XHR_MSXML_VERSION = 0,\r
+ X_Net_XHR_VERSION = 0,\r
X_Net_XHR_ACTIVE_X = 5 <= X.UA.IE && X.UA.IE < 8 && X.UA.ActiveX && ( new Function( [\r
'var x=".XMLHTTP",',\r
'm="MSXML2"+x,',\r
'}'\r
].join( '' ) ) )();\r
\r
+\r
+\r
X.Net.XHR = {\r
- // Opera7.6+, Safari1.2+, khtml3+, Gecko0.9.7+\r
- W3C : !!X_Net_XHR_W3C,\r
+ // Opera7.6+, Safari1.2+, khtml3.?+, Gecko0.9.7+\r
+ W3C : !!X_Net_XHR_W3C,\r
\r
- X_DOMAIN : !!X_Net_XHR_X_DOMAIN,\r
+ X_DOMAIN : !!X_Net_XHR_X_DOMAIN,\r
\r
- ACTIVE_X : !!X_Net_XHR_ACTIVE_X,\r
+ ACTIVE_X : !!X_Net_XHR_ACTIVE_X,\r
+\r
+/*\r
+ * http://hakuhin.jp/as/import.html\r
+ * ファイルの読み込みについて\r
+ * http://hakuhin.jp/as/javascript.html\r
+ * Flash から JavaScript にアクセスする\r
+ */\r
+ FLASH : false,\r
+ \r
\r
// ie7 ではローカルリソースには ActiveX の XHR を使う\r
\r
case 'load' :\r
\r
if( !live ){\r
- // this.reset();\r
+ this.reset();\r
+ return;\r
};\r
if( this._lastProgress === 100 ) return;\r
\r
( 200 <= status && status < 300 ) ||\r
status === 304 ||\r
status === 1223 ||\r
- ( X.UA.Webkit && status == undefined ) // 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( this._type ){\r
+ case null :\r
+ case 'text' :\r
+ data = raw[ 'responseText' ];\r
+ break;\r
+ case 'json' :\r
+ case 'moz-json' :\r
+ case 'document' :\r
+ case 'blob' :\r
+ case 'arraybuffer' :\r
+ };\r
\r
+ console.log( 'status ' + status );\r
+ //console.dir( raw );\r
+ this._busy = false;\r
+ this.asyncDispatch( 0, { type : X.Event.SUCCESS, status : status || 200, data : data } ); \r
} else {\r
console.log( 'status ' + status );\r
//console.dir( raw );\r
live && this.asyncDispatch( 0, { type : X.Event.ERROR, status : raw.status || 0, percent : 100 } );\r
- this.reset();\r
- return;\r
};\r
-\r
- \r
- /*\r
- * opera8, safari2, khtml3 で utf8 日本語文字列の文字化け\r
- */\r
- raw.getAllResponseHeaders();\r
- \r
- // parse json, html, xml, text, script, css\r
- switch( this._type ){\r
- case null :\r
- case 'text' :\r
- data = raw[ 'responseText' ];\r
- break;\r
- case 'json' :\r
- case 'moz-json' :\r
- case 'document' :\r
- case 'blob' :\r
- case 'arraybuffer' :\r
- };\r
- \r
- console.log( 'status ' + status );\r
- //console.dir( raw );\r
- this._busy = false;\r
- this.asyncDispatch( 0, { type : X.Event.SUCCESS, status : status || 200, data : data } );\r
- \r
break;\r
\r
case 'progress' :\r
case 'error' :\r
//console.dir( e );\r
live && this.asyncDispatch( 0, { type : X.Event.ERROR, status : raw.status } );\r
- this.reset();\r
break;\r
\r
//case 'abort' :\r
// break;\r
case 'timeout' : // Gecko 12.0 https://developer.mozilla.org/ja/docs/XMLHttpRequest/Synchronous_and_Asynchronous_Requests\r
live && this.asyncDispatch( 0, { type : X.Event.ERROR, status : raw.status } );\r
- this.reset();\r
break;\r
\r
case 'loadend' :\r
\r
// ie8 では timeout が有効\r
if( X.UA.IE8 ){\r
- X_NET_XHRWrapper.listen( [ 'readystatechange', 'error','abort', 'timeout' ] );\r
+ X_NET_XHRWrapper.listen( [ 'readystatechange', 'error', 'abort', 'timeout' ] );\r
} else\r
if( X.UA.IE7 ){\r
X_NET_XHRWrapper.listen( [ 'readystatechange', 'error' ] );\r
type : jsonString ? X.Event.SUCCESS : X.Event.ERROR,
data : jsonString //eval( jsonString )
} );
- X_NET_JSONPWrapper.cleanup();
console.log( 'ms : ' + time + ' speed : ' + ( ( jsonString.length + ( opt_json2FileSize || 0 ) ) / time * 1000 ) + ' バイト/秒.' );
}
function X_NET_JSONP_loadScriptInNinjaIframe( url ){
X_NET_JSONP_NinjaIframe || ( X_NET_JSONP_NinjaIframe = new X.Util.NinjaIframe() );
- var json2Path = '../js/libs/json2.js',
+ var json2Path = 'js/libs/json2.js',
json2FileSize = 18103,
html;
X_NET_JSONP_loadScriptInNinjaIframe( url );
};
- this._budy = true;
+ this._busy = true;
},
cancel : function(){
},
reset : function(){
- this._budy = this._canceled = false;
- },
-
- cleanup : function(){
- this._budy = this._canceled = false;
+ this._busy = this._canceled = false;
}
}
);