OSDN Git Service

Version 0.6.113, fix X.Net.XHR, etc...
[pettanr/clientJs.git] / 0.6.x / js / 06_net / 01_XNetXHR.js
index fa2e49c..b311ce7 100644 (file)
@@ -103,28 +103,26 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                if( obj[ 'type' ] ){\r
                                        this._type = obj[ 'type' ];\r
                                } else {\r
-                                       temp = url.split( '#' )[ 0 ].split( '?' )[ 0 ].split( '.' );\r
+                                       temp = X_URL_cleanup( url ).split( '.' );\r
                                        if( 2 <= temp.length ){\r
                                                this._type = temp[ temp.length - 1 ].toLowerCase();\r
                                        };\r
                                };\r
                                \r
-                               // TODO ie7 http://127.0.0.1 に対しては ActiveX を使う, onerror は不可\r
-                               \r
                                if( X_Net_XHR_X_DOMAIN ){\r
-                                       if( false /* isXDomain( url ) */ ){ // isXDomain\r
-                                               if( !this._isXDR ){\r
+                                       if( X_URL_isSameDomain( url ) ){ // isXDomain\r
+                                               if( this._isXDR ){\r
                                                        X_EventDispatcher_toggleAllEvents( this, false );\r
-                                                       this._rawObject = X_Net_XHR_X_DOMAIN;\r
+                                                       this._rawObject = X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X;\r
                                                        X_EventDispatcher_toggleAllEvents( this, true );\r
-                                                       this._isXDR = true;\r
+                                                       this._isXDR = false;                                                    \r
                                                };\r
                                        } else {\r
-                                               if( this._isXDR ){\r
+                                               if( !this._isXDR ){\r
                                                        X_EventDispatcher_toggleAllEvents( this, false );\r
-                                                       this._rawObject = X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X;\r
+                                                       this._rawObject = X_Net_XHR_X_DOMAIN;\r
                                                        X_EventDispatcher_toggleAllEvents( this, true );\r
-                                                       this._isXDR = false;\r
+                                                       this._isXDR = true;                                                     \r
                                                };\r
                                        };\r
                                };\r
@@ -135,19 +133,23 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                        switch( this._type ){\r
                                                case '' :\r
                                                case 'text' :\r
+                                               // js, css\r
                                                        raw.responseType = 'text';\r
                                                        break;\r
                                                case 'json' :\r
                                                case 'moz-json' :\r
+                                                       raw.responseType = this._type;\r
                                                        break;\r
                                                case 'document' :\r
                                                case 'xml' :\r
                                                case 'html' :\r
                                                case 'htm' :\r
+                                               // svg\r
                                                        raw.responseType = 'document';\r
                                                        break;\r
                                                case 'blob' :\r
                                                case 'arraybuffer' :\r
+                                               // jpeg,jpg,png,gif,mp3,ogg...\r
                                                        raw.responseType = this._type;\r
                                                        break;\r
                                        };\r
@@ -170,6 +172,8 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                // send 前にフラグを立てる,回線が早いと raw.send() 内で onload -> _busy = false ののち、 _busy = true するため。\r
                                this._busy = true;\r
                                \r
+                               \r
+                               \r
                                // http://allabout.co.jp/gm/gc/24097/#1\r
                                // sendをonreadystatechangeの前に記述すると、ieでは動作しなくなります、、、。\r
                                // konquerorでエラーが発生するのでここでは、とりあえず、send('') としました。\r
@@ -262,8 +266,10 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                                // https://code.google.com/p/fakeworker-js/source/browse/src/javascript/fakeworker.js\r
                                                if(\r
                                                        ( !status && location.protocol === 'file:' ) ||\r
-                                           ( 200 <= status && status < 300 ) ||\r
-                                           status === 304 ||\r
+                                                       // IE 6.0 でローカルファイルにアクセスした\r
+                                                       ( status < 100 ) ||\r
+                                           ( 200 <= status && status < 400 ) ||\r
+                                           //status === 304 ||\r
                                            status === 1223 ||\r
                                            ( X_UA.Webkit && status === undefined ) // safari: /webkit/.test(userAgent)\r
                                                ){\r