OSDN Git Service

Version 0.6.79, fixed X.Net.
authoritozyun <itozyun@user.sourceforge.jp>
Sat, 13 Sep 2014 01:55:27 +0000 (10:55 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Sat, 13 Sep 2014 01:55:27 +0000 (10:55 +0900)
0.6.x/js/04_net/00_XNet.js
0.6.x/js/04_net/01_XNetXHR.js
0.6.x/js/04_net/02_XNetJSONP.js

index a60ee42..3f6e492 100644 (file)
@@ -1,21 +1,40 @@
 // 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
@@ -40,14 +59,21 @@ var X_NET_TYPE_XHR   = 1,
                                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
@@ -58,14 +84,29 @@ var X_NET_TYPE_XHR   = 1,
 \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
@@ -75,6 +116,7 @@ function X_NET_shiftQueue(){
        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
@@ -95,7 +137,7 @@ function X_NET_shiftQueue(){
                        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
index 7f6c38f..a7732f3 100644 (file)
@@ -3,7 +3,7 @@
 \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
@@ -16,13 +16,24 @@ var X_Net_XHR_W3C      = window[ 'XMLHttpRequest' ] && new XMLHttpRequest(),
                '}'\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
@@ -159,7 +170,8 @@ if( X.Net.XHR.W3C || X_Net_XHR_ACTIVE_X ){
                                        case 'load' :\r
                                                \r
                                                if( !live ){\r
-                                                       // this.reset();\r
+                                                       this.reset();\r
+                                                       return;\r
                                                };\r
                                                if( this._lastProgress === 100 ) return;\r
                                                \r
@@ -175,41 +187,35 @@ if( X.Net.XHR.W3C || X_Net_XHR_ACTIVE_X ){
                                            ( 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
@@ -222,7 +228,6 @@ if( X.Net.XHR.W3C || X_Net_XHR_ACTIVE_X ){
                                        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
@@ -230,7 +235,6 @@ if( X.Net.XHR.W3C || X_Net_XHR_ACTIVE_X ){
                                        //      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
@@ -251,7 +255,7 @@ if( X.Net.XHR.W3C || X_Net_XHR_ACTIVE_X ){
 \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
index 76948b8..a9b2458 100644 (file)
@@ -15,7 +15,6 @@ X.Net.JSONP = {
                                        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 ) + ' バイト/秒.' );
                }
@@ -38,7 +37,7 @@ var X_NET_JSONP_ACCESS_KEY = Math.random(),
 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;
        
@@ -151,7 +150,7 @@ X_NET_JSONPWrapper = X.Class._override(
                                X_NET_JSONP_loadScriptInNinjaIframe( url );
                        };
                                                
-                       this._budy = true;
+                       this._busy = true;
                },
                
                cancel : function(){
@@ -166,11 +165,7 @@ X_NET_JSONPWrapper = X.Class._override(
                },
                
                reset : function(){
-                       this._budy = this._canceled = false;
-               },
-               
-               cleanup : function(){
-                       this._budy = this._canceled = false;
+                       this._busy = this._canceled = false;
                }
        }
 );